Php Laravel通过名称创建ID数组';s
我想查询我的Laravel应用程序中的一个表Php Laravel通过名称创建ID数组';s,php,laravel,eloquent,Php,Laravel,Eloquent,我想查询我的Laravel应用程序中的一个表 id | company_name | contact | ----------------------------- 1 | Tesco | Name 1 | 2 | Tesco | Name 2 | 3 | Asda | Name 3 | 4 | Tesco | Name 4 | 5 | Asda | Name 5 | 我正在尝试获取一个包含所有唯一公
id | company_name | contact |
-----------------------------
1 | Tesco | Name 1 |
2 | Tesco | Name 2 |
3 | Asda | Name 3 |
4 | Tesco | Name 4 |
5 | Asda | Name 5 |
我正在尝试获取一个包含所有唯一公司名称和所有ID号的数组
'Tesco' => [1,2,4]
'Asda' => [3,5]
我试过了
$companies = Contact::select('company_name','id')->groupBy('company_name')->get();
然而,这要求将“id”包括在违背目的的组中。我理解它要求这个,因为它不是一个总数或计数等
上表可能看起来不寻常,我知道我应该与公司表有关联,但这在现阶段是必要的。您可以使用
GROUP\u CONCAT()
这将返回如下结果:
company_name | ids
Tesco | 1,2
编辑:如果希望ID以数组的形式出现,只需映射集合即可将其转换为:
$companies->map(function($column) {
$column->ids = explode(',', $column->ids);
});
这应该能奏效 您可以使用
GROUP\u CONCAT()
这将返回如下结果:
company_name | ids
Tesco | 1,2
编辑:如果希望ID以数组的形式出现,只需映射集合即可将其转换为:
$companies->map(function($column) {
$column->ids = explode(',', $column->ids);
});
这应该能奏效 加1表示集合上方的
映射
提示!加1表示集合上方的映射
提示!