在Laravel Eloquent中,有没有一种方法可以在“with”和“paginate”中使用“column filter”闭包?

aamkag61  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(109)

我正在使用Laravel Breeze + React。
我想在GameController中做这样的事情:

$expiredMatchesPagination = Game::with('homeTeam: id, home_team_id, logo', 'awayTeam: id, away_team_id, logo')             
->where('start', '<', Carbon::now())             
->orderBy('start', 'asc')             
->paginate(
     perPage: 15,
     columns: ['start', 'home_team', 'away_team'],
     pageName: 'expiredMatchesPage');

我想从客场和主场球队过滤一些列(需要标志和名称从它只)+我需要比赛的开始日期。
我尝试了许多组合,但我可以使要么分页或与列关闭工作。
就像我之前的例子一样,'start'过滤器可以工作,但是如果我在React中登录它,home_team和away_team都将为null。

toe95027

toe950271#

嗨,我建议你做这样的事情,如果它帮助你

$expiredMatchesPagination = Game::with(['homeTeam'=>function($q){
            $q->select('logo', 'name');
        }, 'awayTeam'=>function($q){
            $q->select('logo', 'name');
        }])
            ->where('start', '<', Carbon::now())
            ->orderBy('start', 'asc')
            ->select('start')->paginate([
                    'perPage' => 15,
                    'columns' => ['start', 'home_team', 'away_team'],
                    'pageName'=> 'expiredMatchesPage']
            );

这应该是可行的,因为我在回调函数的帮助下选择了我想要的列,这样我就可以选择我想要的列

相关问题