我使用pluck()
函数来获取带有键值的输出集合:
$work_types = Work::orderBy('name')->get()->pluck('name', 'id');
输出是:
{
0 => "Name1",
1 => "Name2",
2 => "Name3
}
如何将值name
与值id
合并以获取以下对象:
{
0 => "0 -Name1",
1 => "1 - Name2",
2 => "2 - Name3
}
答案 0 :(得分:4)
Laravel方式是create an accessor:
public function getIdNameAttribute($value)
{
return $this->id.' - '.$this->name;
}
然后使用它:
$work_types = Work::orderBy('name')->pluck('id_name', 'id');
答案 1 :(得分:2)
您可以使用map
:
$work_types = Work::orderBy('name')->pluck('name', 'id')
->map(function ($item, $key) {
return "$key - $item";
});
https://laravel.com/docs/5.3/collections#method-map
希望这有帮助!
答案 2 :(得分:0)
您可以将select()
函数与DB::raw()
函数一起用作:
$work_types = Work::select('id', DB::raw("concat(id, ' - ',name) as id_name"))
->orderBy('name')
->pluck('id_name', 'id')
您不需要获取所有列,然后执行。您可以直接从数据库中删除。
答案 3 :(得分:0)
合并**** FirstName **和** LastName ****来自数据库:
'clients' => Client::select('id', DB::raw("concat(first_name, ' ',last_name) as f_l"))
->orderBy('id','desc')
->pluck('f_l', 'id')
->prepend('Select Clients.....',''),