使用laravel连接查询

时间:2018-07-24 18:11:52

标签: php mysql laravel

我真的对laravel上的加入感到困惑。

我有一个users表和一个students_subjects表,在students_subjects表中有一个subject_id列和一个user_id列, m尝试通过user_id表中的teachers_subjects获取用户列表,并在students_subjects上具有相同的subject_id列。

我已经尝试过:

$user_id = Auth::user()->id;
$results = DB::table('users')
->join('students_subjects', 'students_subjects.subject_id', '=', 'teachers_subjects.subject_id')
->where('students_subjects.user_id', $user_id)
->get();

但是我遇到了一些错误...如果有人可以向我展示应该怎么做,以便我能理解如何在laravel进行联接工作,那将是很棒的事情。

结构:

users table :
- id
- name
- last name

students_subjects :
- subject_id
- user_id (users->id)

teachers_subjects :
- subject_id
- teacher_id (users->id)

2 个答案:

答案 0 :(得分:1)

您需要为两个表添加一个联接:

$user_id = Auth::user()->id;
$results = DB::table('users')
->join('students_subjects', 'users.id', '=', 'students_subjects.user_id')
->join('teachers_subjects', 'students_subjects.subject_id', '=', 'teachers_subjects.subject_id')
->where('students_subjects.user_id', $user_id)
->get();

您可能需要对此进行调整才能获得所需的确切信息。

答案 1 :(得分:0)

如果您不知道使用laravel雄辩的查询,那么您可以使用laravel执行原始查询

$cards = DB::select("SELECT * FROM TABLE");

这样,您可以轻松运行查询而无需任何其他RND