Php 将集合的值转换为laravel中的键
这是我的mysql查询:Php 将集合的值转换为laravel中的键,php,laravel,laravel-5,Php,Laravel,Laravel 5,这是我的mysql查询: $tmp=almacen::select('nombre_empresa','oferta')->join('users','users.id','=','almacen.emp_id')->where('almacen.event_id','5')->get(); 这将返回以下几个对象: ... App\almacen {#1948 nombre_empresa: "Aux1", oferta: "Serv_1234
$tmp=almacen::select('nombre_empresa','oferta')->join('users','users.id','=','almacen.emp_id')->where('almacen.event_id','5')->get();
这将返回以下几个对象:
...
App\almacen {#1948
nombre_empresa: "Aux1",
oferta: "Serv_1234",
},
App\almacen {#1947
nombre_empresa: "Aux2",
oferta: "Serv 12345678",
},
...
例如,我需要在一个键中转换“nombre_empresa”
$tmp['Aux2']
this return:
"Serv 12345678"
在拉威尔有可能做到这一点吗?或者我应该用另一种方式来做吗?当然拉威尔可以处理,请查看
mapWithKeys
可能就是您想要的:
$mapped = $results->mapWithKeys(function ($item) {
return [$item['nombre_empresa'] => $item['oferta']];
});
编辑:mapWithKeys
而不是map
您可以使用:
您可以在查询结束时,在get方法之后直接链接它
但是在这种情况下,您只能从数据库中获取2个字段,您可以直接在查询生成器上使用pull
:
$tmp=almacen::select('nombre_empresa','oferta')
->join('users','users.id','=','almacen.emp_id')
->where('almacen.event_id','5')
->pluck('oferta','nombre_empresa');
Pull的第二个参数将用于键。
如果没有给出,它将只使用数字键:0,1,…当然,所有的解决方案都是有效的,但我认为在Laravel中也是最佳实践的方法是使用pluck()
例如:
$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()
- 注意,我将转换toRayay.(),但它不是必须的,我会考虑它,因为使用这样一个简单的集合,我可能不需要额外的功能,使得这个变量占用更少的空间。
$tmp=almacen::select('nombre_empresa','oferta')
->join('users','users.id','=','almacen.emp_id')
->where('almacen.event_id','5')
->get()
->pluck('oferta', 'nombre_empresa')
->toArray();