Php 使用laravel连接查询

Php 使用laravel连接查询,php,mysql,laravel,Php,Mysql,Laravel,我真的被拉威尔的加入弄糊涂了 我得到了一个users表和一个students\u subjects表,在students\u subjects表中,我得到了一个subject\u id列和一个user\u id列,我正试图通过teachers\u subjects表中的user\u id获取用户列表,该列表在students\u subjects中具有相同的subject\u id列 我试过: $user_id = Auth::user()->id; $results = DB::tabl

我真的被拉威尔的加入弄糊涂了

我得到了一个
users
表和一个
students\u subjects
表,在
students\u subjects
表中,我得到了一个
subject\u id
列和一个
user\u id
列,我正试图通过
teachers\u subjects
表中的
user\u id
获取用户列表,该列表在students\u subjects中具有相同的
subject\u 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();
但是我有一些错误。。。如果有人能告诉我应该怎么做,这样我就能理解如何在拉雷维尔完成连接工作,那就太好了

结构:

users table :
- id
- name
- last name

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

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

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

$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();

你可能需要调整这个来得到你想要的东西

如果您不知道如何使用laravel雄辩的查询,那么您可以使用laravel执行原始查询,如果您对它感到满意的话

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

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

您需要两个不同的联接。一个是学生科目,一个是教师科目。现在,你正试图在一张你还没有指定的桌子上加入学生和科目。@aynber首先感谢你的回答,你能给我举个最好的例子吗?谢谢,我想我现在非常理解它的工作原理!如果我想让用户在users->idi上使用相同的
teacher\u id
,如果你是指用户->学生主题->教师主题->用户,那么你只需添加第三个加入。但是,我建议在第三个连接上使用users表的别名,因为这会与第一个用户冲突
->join('user AS teacher\u user'、'teachers\u subjects.user\u id'、'='、'teacher\u user.id')