我是 Laravel 的新手。为什么我总是遇到错误:
array_map():参数 #2 应该是一个数组?
而我在此方法上分配参数数组?
这是我的示例代码:
$products = Category::find(1)->products;
注意: 1个类别有很多产品
这是查询中的数组:
[{
"id": "1",
"name": "action figure",
"created_at": "2015-11-09 05:51:25",
"updated_at": "2015-11-09 05:51:25"
}, {
"id": "2",
"name": "manga",
"created_at": "2015-11-09 05:51:25",
"updated_at": "2015-11-09 05:51:25"
}]
当我尝试以下代码时:
$results = array_map( function($prod) {
return $prod.name;
}, $products);
我收到如下错误:
“array_map():参数 #2 应该是一个数组”
你应该写
$results = array_map(function ($prod) {
return $prod->name;
}, $products->toArray());
因为
$products
是一个集合而不是一个数组。
如果您只想获得产品名称列表,请使用
pluck
方法
$results = $products->pluck('name')
在较新版本的 Laravel 中,您应该使用
$products->all();
而不是 toArray
,因为在 Eloquent 集合的情况下,toArray
也会尝试将模型转换为数组。 all
将按原样返回模型数组。
话虽这么说,既然你在一个集合上,你也可以像这样使用
map
方法(这与你的情况下使用 pluck
完全相同)
$products->map(function ($product) {
return $product->name;
});