Laravel中如何获取对象数组?解决集合与数组合并报错问题
解决Laravel Collection与数组合并的类型错误问题
问题根源
你用WpUser::get()得到的是Eloquent Collection对象,而array_merge()只接受数组类型的参数,所以会触发Argument #2 must be of type array, Illuminate\Database\Eloquent\Collection given的错误。你需要保留对象数组的结构,不能用toArray()(它会把模型转成数组),可以用下面两种方法解决:
方法1:利用Collection的merge方法
Laravel的Collection自带合并能力,先把原有数组转成Collection,合并后再转回对象数组:
// 将$final转为Collection,合并$result后,用all()得到对象数组 $users = collect($final)->merge($result)->all();
方法2:把Collection转为对象数组后再合并
调用Collection的all()方法,直接获取由Eloquent模型对象组成的数组,再用array_merge合并:
// 将Collection转为模型对象数组 $resultArray = $result->all(); // 合并两个对象数组 $users = array_merge($final, $resultArray);
这两种方法都能保留数组中的Eloquent模型对象,不会像toArray()那样把对象转成普通数组。
内容的提问来源于stack exchange,提问作者S.M_Emamian
相关产品推荐
相关产品推荐

