Laravel Eloquent - >只获得城市所在的活动

时间:2015-12-28 21:32:09

标签: php laravel eloquent relationships laravel-5.2

我有一张桌子:

Events
Cities
Clubs

关系如下:

  • Event' hasOne' ClubClub' hasMany' Event秒。
  • A Club' hasOne' CityCity' 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 );

1 个答案:

答案 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 );