我有一个收藏。我想为每个项目添加一个新属性[用户]。当我使用map函数或者甚至foreach循环收集时,我注意到,代码在每个项目内部循环。因此,将读取集合项中的每个属性。请查看以下
Log $myCollection:
local.INFO: Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => Array
(
[id] => 6
[name] => AAAAA
[code] => D2
[component_id] => 5
)
[1] => Array
(
[id] => 7
[name] => BBBB
[code] => D1
[component_id] => 5
)
[2] => Array
(
[id] => 47
[name] => CCCC
[code] => CR7
[component_id] => 3
)
[3] => Array
(
[id] => 48
[name] => DDDD
[code] => CJ9
[component_id] => 3
)
)
)
$myCollection->map(function ($item) use($users, $role) {
$item = Site::findOrFail($item);
$item->users = $users;
return $item;
});
我得到: SQLSTATE [22P02]:无效的文本表示形式:7错误:整数:“ AAAA”的输入语法无效。我认为这是因为代码在myCollection的每个项目的名称上循环。
请问我该如何解决?谢谢
答案 0 :(得分:0)
$item
包含集合的每个对象,因此您应该使用适当的键。
$myCollection->map(function ($item) use($users, $role) {
$item = Site::findOrFail($item->id); // or $item['id']
$item->users = $users;
return $item;
});
实际上,我现在对它的观察更好,您根本不需要再次找到该物品。因此,在您的关闭中,仅需这两行即可。
$item->users = $users;
return $item;