Laravel Eloquent -> 仅获取城市所在的事件
Laravel Eloquent -> get only events where city is
我有一个 table 有:
Events
Cities
Clubs
关系如下:
- 一个
Event
'hasOne'Club
和一个Club
'hasMany'Event
s.
- 一个
Club
'hasOne'City
和一个City
'hasMany'Club
s.
我想向我的查询添加一个过滤器以获取 club.city == 'Oklahoma'
所在的所有事件。这是我试过的:
$events = Event::where( 'accepted', 1 )
->with( [ 'club.city', 'organisation' ] )
->where( 'club.city.name', 'Rotterdam' )
->orderBy( 'created_at', 'asc' )
->paginate( 6 );
您可以使用 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 );
我有一个 table 有:
Events
Cities
Clubs
关系如下:
- 一个
Event
'hasOne'Club
和一个Club
'hasMany'Event
s. - 一个
Club
'hasOne'City
和一个City
'hasMany'Club
s.
我想向我的查询添加一个过滤器以获取 club.city == 'Oklahoma'
所在的所有事件。这是我试过的:
$events = Event::where( 'accepted', 1 )
->with( [ 'club.city', 'organisation' ] )
->where( 'club.city.name', 'Rotterdam' )
->orderBy( 'created_at', 'asc' )
->paginate( 6 );
您可以使用 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 );