Laravel: 如何在多对多关系中使用 where 子句

Laravel: How to use where clause in many to many relation

如何在多对多关系中使用 where 子句

Table:用户

   id - name - email

Table:移位

   id - name

Table: shifting_user

   id - user_id - shifting_id

用户模型:

public function shiftings()
{
    return $this->belongsToMany('App\shifting');
}

我在控制器中使用以下自定义查询

public function index()
{
    return $user = DB::select('select * from shifting_user
    where user_id in (select id from users)' );
}

如何将其转换为 laravel standard/equloent 查询。

你需要先建立他们的关系。

在您的 Shifting 模型中:

public function users()
{
    return $this->belongsToMany(User::class);
}

在您的用户模型中:

public function shiftings ()
{
     return $this->belongsToMany(Shifting::class);
}

然后你可以通过简单地进行预先加载来获得所有的转变,包括它的相关用户

$shiftings = Shifting::with('users')->get();
dd($shiftings);