Laravel 2 table 加入所有来自左边的 table 与右边的成员合并 table 具有给定的 FK 值
Laravel 2 table join with all from left table merged with members of the right table with a given FK value
我在 Laravel 中有两个 table,我想将它们合并在一起,但是,我想 return 第一个 [=27= 的每个值](没有重复项)以及第二个 table 中 FK 值为 2 的值。如果没有 FK 为 2 的条目,则它加入空值。
为了让我的问题更清楚一点,假设我们有以下 tables:
TV Shows Table
ID | Show
1 | First Show
2 | Second Show
3 | Third Show
Favorites Table
Show_ID | Member_ID
1 | 1
3 | 1
1 | 2
2 | 2
当我加入成员 ID 为 2 的 table 时(忽略加入的 'Show_ID' 列),我希望将它们合并到如下所示的结果集中:
Merged Table
ID | Show | Member_ID
1 | First Show | 2
2 | Second Show | 2
3 | Third Show | null
谢谢。
我不是 100% 理解,所以希望这就是您要找的。
我重命名了一些列名称以使事情更清楚。
DB::table('shows')
->select(
'shows.id as show_id',
'shows.name as show_name',
'member.id as member_id'
)
->leftJoin('favourites', 'shows.id', '=', 'favourites.show_id')
->get();
左联接将允许在 member_id
中存在 null
(如果联接中不存在)。
您可以添加此限制为两个成员 ID:
DB::table('shows')
->select(
'shows.id as show_id',
'shows.name as show_name',
'member.id as member_id'
)
->leftJoin('favourites', 'shows.id', '=', 'favourites.show_id')
->where('member.id', 2)
->get();
我自己解决了。我需要像这样进行功能连接:
DB::table('shows')
->leftJoin('favorites', function($q) use $memberID)
{
$q->on('shows.ID', '=', 'favorites.show_ID')
->where('favorites.member_ID', '=', $memberID);
})->get();
我在 Laravel 中有两个 table,我想将它们合并在一起,但是,我想 return 第一个 [=27= 的每个值](没有重复项)以及第二个 table 中 FK 值为 2 的值。如果没有 FK 为 2 的条目,则它加入空值。
为了让我的问题更清楚一点,假设我们有以下 tables:
TV Shows Table
ID | Show
1 | First Show
2 | Second Show
3 | Third Show
Favorites Table
Show_ID | Member_ID
1 | 1
3 | 1
1 | 2
2 | 2
当我加入成员 ID 为 2 的 table 时(忽略加入的 'Show_ID' 列),我希望将它们合并到如下所示的结果集中:
Merged Table
ID | Show | Member_ID
1 | First Show | 2
2 | Second Show | 2
3 | Third Show | null
谢谢。
我不是 100% 理解,所以希望这就是您要找的。
我重命名了一些列名称以使事情更清楚。
DB::table('shows')
->select(
'shows.id as show_id',
'shows.name as show_name',
'member.id as member_id'
)
->leftJoin('favourites', 'shows.id', '=', 'favourites.show_id')
->get();
左联接将允许在 member_id
中存在 null
(如果联接中不存在)。
您可以添加此限制为两个成员 ID:
DB::table('shows')
->select(
'shows.id as show_id',
'shows.name as show_name',
'member.id as member_id'
)
->leftJoin('favourites', 'shows.id', '=', 'favourites.show_id')
->where('member.id', 2)
->get();
我自己解决了。我需要像这样进行功能连接:
DB::table('shows')
->leftJoin('favorites', function($q) use $memberID)
{
$q->on('shows.ID', '=', 'favorites.show_ID')
->where('favorites.member_ID', '=', $memberID);
})->get();