【发布时间】:2018-12-15 21:03:58
【问题描述】:
我有集合(来自具有复杂查询的数据库),我试图通过 ->only() 方法只获取它的几个值,但它不起作用。
收藏:
0 => array:4 [
"id" => 1
"start_date" => "2018-07-07 14:00:00"
"end_date" => "2018-07-07 15:00:00"
"child" => array:5 [
"id" => 1
"name" => "Mr. Davin Conroy Sr."
"email" => "prempel@example.com"
"created_at" => "2018-07-06 22:28:16"
"updated_at" => "2018-07-06 22:28:16"
]
]
1 => array:4 [
"id" => 2
"start_date" => "2018-07-07 15:00:00"
"end_date" => "2018-07-07 16:00:00"
"child" => array:5 [
"id" => 1
"name" => "Mr. Davin Conroy Sr."
"email" => "prempel@example.com"
"created_at" => "2018-07-06 22:28:16"
"updated_at" => "2018-07-06 22:28:16"
]
我的代码:
$subset = $monitorList->map(function ($monitor) {
return collect($monitor->toArray())
->only(['id', 'start_date', 'end_date', 'child.name', 'child.email'])
->all();
});
但它丢失了 child.name。有什么办法可以解决这个问题?
0 => array:3 [
"id" => 1
"start_date" => "2018-07-07 14:00:00"
"end_date" => "2018-07-07 15:00:00"
]
1 => array:3 [
"id" => 2
"start_date" => "2018-07-07 15:00:00"
"end_date" => "2018-07-07 16:00:00"
]
【问题讨论】:
-
您已将其转换为数组,它不再是 Model 实例,这就是为什么您不能使用 dot
.来获取值(我猜)。在进行查询时,您肯定已经可以得到该值。
标签: arrays laravel recursion collections