我有一张桌子:
Events
Cities
Clubs
关系如下:
Event
' hasOne' Club
和Club
' hasMany' Event
秒。Club
' hasOne' City
和City
' hasMany' Club
秒。我想在查询中添加一个过滤器,以获取club.city == 'Oklahoma'
所有事件。这就是我试过的:
$events = Event::where( 'accepted', 1 )
->with( [ 'club.city', 'organisation' ] )
->where( 'club.city.name', 'Rotterdam' )
->orderBy( 'created_at', 'asc' )
->paginate( 6 );
答案 0 :(得分:1)
您可以使用 whereHas 根据关系条件的存在进行过滤。
$events = Event::where( 'accepted', 1 )
->with( [ 'club.city', 'organisation' ] )
->whereHas('club.city', function ($q) use ($cityname) {
$query->where('name', $cityname);
})->orderBy( 'created_at', 'asc' )
->paginate( 6 );