我有两个表的用户和位置。我需要同时加入两个表
我需要的是获取用户表中存在的所有用户的所有区域号。 即用户1在第二个表中有3个条目,因此我需要以这种方式加入该表, id1 = 1 面积= 2,3
区域2正在重复,因此请勿重复两次
我尝试了加入,但现在获得了正确的方法。
我尝试了什么?
$location = User::
join('addresses','users.id1','=','addresses.id1') ->select('users.id1','addresses.area')
->get();
预期产量
用户1->区域-> 2,3
答案 0 :(得分:2)
这是执行此操作的两种方法。
首先,您可以使用Laravel关系:-
在模型User
中建立关系:-
function addresses()
{
return $this->hasMany(Address::class, 'id1', 'id1');
}
现在,在用户控制器中,您可以获得这样的用户地址(区域)
$users = User::with('addresses')->get();
dd($users->toArray());
这将打印出类似的内容
[
{
id1: 1,
name: abaa
pwd: 12345
addresses: [
{
id2: 1,
id1: 1,
area: 2
},
{
id2: 2,
id1: 1,
area: 3
},
{
id2: 3,
id1: 1,
area: 3
}
]
},
{
...
}
]
第二,您可以使用Laravel关系:-
$builder = new User;
$builder->join('addresses','users.id1','=','addresses.id1')
->selectRaw("users.*, GROUP_CONCAT(DISTINCT addresses.area SEPARATOR ',') as distinct_areas")
->groupBy("users.id1")
->get();
此查询将为您提供类似这样的结果
[
{
id1: 1,
name: abaa,
pwd: 12345,
distinct_areas: 2,3
},
{
...
}
]
我认为这会对您有所帮助。