加入Laravel

Join in Laravel

我正在做一个 laravel 项目,我遇到了这个小问题。

我有两个 tables usersenrolls,用户可以在其中注册课程,然后我将 user_idcourse_id 存储在enroll table.

现在我想通过 course_id

获取注册特定课程的用户
$users =  SELECT * FROM users WHERE...

谢谢

没有表的模式有点困难,但您可以像这样在模型中使用查询构建器:

$users = DB::table('users')
        ->join('enroll', 'users.id', '=', 'enroll.user_id')
        ->get();

以更 Laravel 的方式

在用户模型中

public function enrollments()
{
    return $this->belongsToMany(Course::class, 'enrollment', 'user_id');
}

课程中class

public function enrollers()
{
    return $this->belongsToMany(User::class, 'enrollment', 'course_id');
}

然后您只需调用 $user->enrollments() 即可获得用户已注册的课程。反之亦然,您可以 $course->enrollers() 让用户注册该课程。

Laravel docs 中了解更多关于多对多关系的信息。