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

Mat*_*rce 2 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();
}
Run Code Online (Sandbox Code Playgroud)

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

我试试......

$advisors = Advisor::all();
$advisors = $advisors->advisorEvents()->where('event_name', $event);
Run Code Online (Sandbox Code Playgroud)

......但是我得到了错误

"Method advisorEvents不存在".

我试试......

$advisors = Advisor::with('events')->where('event_name', $event)->get();
Run Code Online (Sandbox Code Playgroud)

......但是我得到了

"在顾问表中找不到列event_name"...

感谢所有帮助,谢谢!

Mar*_*boc 5

试试whereHas这样:

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