这是我的mysql查询:
jobsNearByFetch
这将返回以下几个对象:
$tmp=almacen::select('nombre_empresa','oferta')->join('users','users.id','=','almacen.emp_id')->where('almacen.event_id','5')->get();
我需要转换" nombre_empresa"在一个键中,例如
...
App\almacen {#1948
nombre_empresa: "Aux1",
oferta: "Serv_1234",
},
App\almacen {#1947
nombre_empresa: "Aux2",
oferta: "Serv 12345678",
},
...
是否可以在Laravel中执行此操作?或者我应该以另一种方式做到这一点?
答案 0 :(得分:1)
当然Laravel可以解决这个问题,请查看available collections methods。 mapWithKeys
可能就是你要找的东西:
$mapped = $results->mapWithKeys(function ($item) {
return [$item['nombre_empresa'] => $item['oferta']];
});
修改:mapWithKeys
而不是map
答案 1 :(得分:0)
您可以使用keyBy:
$tmp->keyBy('nombre_empresa');
您可以将其直接链接到查询的末尾,即get方法之后。
但是在这种情况下,您只能从数据库中获得2个字段,可以直接在pluck
上使用query builder
:
$tmp=almacen::select('nombre_empresa','oferta')
->join('users','users.id','=','almacen.emp_id')
->where('almacen.event_id','5')
->pluck('oferta','nombre_empresa');
第二个参数pluck将用作键。 如果没有给出,它将仅使用数字键:0、1,...
答案 2 :(得分:0)
当然,所有解决方案都是有效的,但是我认为在Laravel中被认为是最佳实践的方法是使用pluck()
Documentation
示例:
$tmp=almacen::select('nombre_empresa','oferta')
->join('users','users.id','=','almacen.emp_id')
->where('almacen.event_id','5')
->get()
->pluck('oferta', 'nombre_empresa')
->toArray();
请注意,pluck()
是5.2版中引入的一种新方法,用于替换以前使用的lists()