Laravel 除了私人关系以外的一切

Laravel 除了私人关系以外的一切,laravel,many-to-many,relationship,Laravel,Many To Many,Relationship,我想得到所有的行,这与Laravel上的belongTomany关系相反 例如,有事件表和访问表。如果用户访问了某个事件,则pivot事件访问时访问的表标记为1 我想让所有那些未被访问的活动 例如,用户模型: public function userVisitedEvents() { return $this->belongsToMany(Visits::class, 'event_visit') ->where('visited', '=', '1'); }

我想得到所有的行,这与Laravel上的
belongTomany
关系相反

例如,有
事件
表和
访问
表。如果用户访问了某个事件,则pivot
事件访问时访问的表标记为1

我想让所有那些未被访问的活动

例如,用户模型:

public function userVisitedEvents()
{
    return $this->belongsToMany(Visits::class, 'event_visit')
        ->where('visited', '=', '1');
}//end userVisitedEvents()
这将选择所有已访问的事件

我想要实现的目标:我需要得到相反的,得到所有事件,即:

  • 标记为已访问0
  • 此访问根本不存储(没有关系)
  • 这是因为
    belongtomany
    关系是使用
    内部联接创建的。如果使用
    左连接创建它
    -没有问题

    PS-
    ->其中('visted','1')将不起作用,因为它将只查找(1)个案例,而不是所有事件

    也许有机会告诉你该使用哪个连接? 或者,唯一的选择是手动使用查询生成器?

    您正在寻找“关系缺失”

    您可能需要根据您的环境进行调整。如果你不能使用它,也检查一下

    Event::whereDoesntHave(...); //takes a closure.
    
    来源:

    您正在寻找“关系缺失”

    您可能需要根据您的环境进行调整。如果你不能使用它,也检查一下

    Event::whereDoesntHave(...); //takes a closure.
    

    来源:

    用户不必担心获取所有未访问的事件。您需要提供,使用访问模型中的查询范围可能不太好的解决方案是,选择并保存id,然后执行另一个操作(从访问中获取事件),用户不必担心获取所有未访问的事件。您需要提供的是,使用访问模型中的查询范围可能不太好的解决方案是这样做:选择并保存id,然后执行另一个操作,执行oposite(从访问中获取事件),这似乎是我在文档中遗漏的。看起来很有效。我要试试这个,我会给你一个报告,进展如何!似乎我在文档中遗漏了这个。看起来很有效。我要试试这个,我会给你一个报告,进展如何!