我想获得所有的行,这是在Laravel belongsToMany
关系的对面。所有,但属于ToMany关系
例如,有events
表和visits
表。如果用户访问过一个事件,则访问数据库event_visit
表中标记为1.
我想获取所有这些事件,即不是访问过。
例如,用户模型:
public function userVisitedEvents()
{
return $this->belongsToMany(Visits::class, 'event_visit')
->where('visited', '=', '1');
}//end userVisitedEvents()
这将选择所有参观活动。
我想达到的目标:我需要得到相反,让所有的事件,那要么是:
- 标记为访问0
- 这次访问不是存储在所有(没有关系)
问题在那里,因为belongsToMany
关系是使用INNER JOIN
创建的。如果它将与LEFT JOIN
创建 - 没问题。
PS - ->where('visited', '<>', '1');
将不起作用,因为它只会找到(1)个案,而不是所有事件。
也许有机会分辨使用哪个连接? 或者唯一的选择是手动使用查询生成器?
这不是用户的关注,以获取所有非参观活动。你需要使用查询范围从访问模型 –
提供一个解决方案,可能不会很漂亮将做这个选择,并保存身份证,然后做另一个做相反的事情(从访问获取事件) –