我有一个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”...
感谢所有帮助,谢谢!
答案 0 :(得分:5)
请尝试whereHas
,如下所示:
$event_name = 'Some Name';
$advisors = Advisor::whereHas('events', function ($query) use($event_name) {
$query->where('event_name', $event_name);
})->get();