查询多对多关系具有一定价值的所有记录

时间:2017-10-31 12:32:47

标签: php laravel

我有一个Advisor类与Events类有多对多的关系。这种关系定义为:

public function events()
{
    return $this->belongsToMany('App\Event', 'advisor_events', 'advisor_id', 'event_id')->withTimestamps();
}

public function advisorEvents()
{
    return $this->events()->get();
}

事件表只有一个ID列和一个“event_name”列。我要做的是找到所有与特定事件名称相关的顾问。

我试试......

$advisors = Advisor::all();
$advisors = $advisors->advisorEvents()->where('event_name', $event);

...但我收到了错误

  

“方法顾问程序不存在”。

我试试......

$advisors = Advisor::with('events')->where('event_name', $event)->get();

......但我得到了

  

“在顾问表中找不到列event_name”...

感谢所有帮助,谢谢!

1 个答案:

答案 0 :(得分:5)

请尝试whereHas,如下所示:

$event_name = 'Some Name';
$advisors = Advisor::whereHas('events', function ($query) use($event_name) {
    $query->where('event_name', $event_name);
})->get();