我有一些使用with的db查询的结果,然后我将它转换为数组,因为我想只提取id和名称。
我尝试过使用array_only方法 http://laravel.com/docs/helpers#arrays
$result = array_only($result, ['id', 'user.name']);
它没有给我什么,所以我不认为它支持点符号。
我期待得到
array
array
id => 1
name => Bill Cstevens
array
id => 2
name => Jennyfer Aufderhar
array
id => 3
name => Catharine Kuhlman
这是我正在做的数组。我认为有某种帮助,没有我必须编写一些代码来自行循环。
我还尝试过$ queryResult->列表(' user.name',' id');因为集合支持列表 - 它确实给了我id,但user.name为null :(
array (size=3)
0 =>
array (size=7)
'id' => string '1'
'user_id' => string '3'
'phone' => string '04 346 6337'
'address' => string '819 Quigley Grove, Jazmynston, 6786'
'created_at' => string '2014-06-12 19:27:00'
'updated_at' => string '2014-07-15 05:57:04'
'user' =>
array (size=5)
'id' => string '3'
'name' => string 'Bill Cstevens'
'email' => string 'xxxx@example.com'
'created_at' => string '2014-06-15 22:40:25'
'updated_at' => string '2014-07-02 06:35:03'
1 =>
array (size=7)
'id' => string '2'
'user_id' => string '6'
'phone' => string '06 354 5069'
'address' => string '7 Bergnaum Mall, Stuartston, '
'created_at' => string '2014-06-15 22:40:25'
'updated_at' => string '2014-07-02 06:35:03'
'user' =>
array (size=5)
'id' => string '6'
'name' => string 'Jennyfer Aufderhar'
'email' => string 'rudy.baumbach@example.com'
'created_at' => string '2014-06-15 22:40:25'
'updated_at' => string '2014-07-02 06:35:03'
2 =>
array (size=7)
'id' => string '3'
'user_id' => string '7'
'phone' => string '04 777 9959'
'address' => string '4 O'Kon Drive, Janville, Hawkes Bay, 1667'
'created_at' => string '2014-05-31 17:49:09'
'updated_at' => string '2014-07-12 21:46:06'
'user' =>
array (size=7)
'id' => string '5'
'name' => string 'Catharine Kuhlman'
'email' => string 'dimitri50@example.com'
'created_at' => string '2014-05-31 17:49:09'
'updated_at' => string '2014-07-12 21:46:06'
答案 0 :(得分:1)
您可能只需要组合两个辅助函数:
array_only(array_dot($result), ['id', 'user.name']);
答案 1 :(得分:1)
在集合上使用map
:
$addresses = $collection->map(function ($address)
{
return ['id' => $address->id, 'name' => $address->user->name];
});
答案 2 :(得分:0)
Dave提到了什么,或者您可以使用点符号来使用array_get,这将根据这样的文档检索嵌套数组 -
$array = array('names' => array('joe' => array('programmer')));
$value = array_get($array, 'names.joe');