Dev*_*Wol 0 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 |
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取包含所有 ID 号的所有唯一公司名称的数组。
'Tesco' => [1,2,4]
'Asda' => [3,5]
Run Code Online (Sandbox Code Playgroud)
我试过了
$companies = Contact::select('company_name','id')->groupBy('company_name')->get();
Run Code Online (Sandbox Code Playgroud)
然而,这要求将“id”包含在违背目的的组中。我知道它要求这样做是因为它不是 SUM 或 COUNT 等。
上表可能看起来不寻常,我知道我应该与公司表有关系,但这在现阶段是必要的。
你可以用 GROUP_CONCAT()
$companies = Contact::select('company_name', DB::raw('GROUP_CONCAT(id) as ids'))
->groupBy('company_name')
->get();
Run Code Online (Sandbox Code Playgroud)
这将返回如下内容:
company_name | ids
Tesco | 1,2
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想要一个数组形式的 ids,你可以映射集合来转换它:
$companies->map(function($column) {
$column->ids = explode(',', $column->ids);
});
Run Code Online (Sandbox Code Playgroud)
这应该够了吧。