Laravel开发:如何将对象数组集合转换为属性数组集合
解决Laravel Collection从对象数组转为属性数组的问题
看起来你现在拿到的是包含User模型对象的Collection,但需要把每个元素转换成对应的属性数组对吧?这在Laravel里其实有几种很方便的实现方式,我给你列出来:
方法一:使用map+toArray()(通用场景)
如果需要的是模型的完整属性数组(包含模型允许输出的所有属性,会自动排除hidden里的字段),可以用map配合模型的toArray()方法:
// 匿名函数写法(兼容PHP版本较低的情况) $users = $users->map(function ($user) { return $user->toArray(); }); // PHP 7.4+ 箭头函数更简洁 $users = $users->map(fn($user) => $user->toArray());
方法二:直接获取模型的原始属性数组
如果你需要的是和dd输出里看到的#attributes完全一致的数组(包含所有数据库字段,不受hidden/visible设置影响),可以用模型的getAttributes()方法:
$users = $users->map(fn($user) => $user->getAttributes());
方法三:自定义需要的属性数组
如果只需要特定的几个属性,而不是全部,直接在map里手动构造数组即可:
$users = $users->map(function ($user) { return [ 'id' => $user->id, 'ua_id' => $user->ua_id, 'grade_id' => $user->grade_id // 这里可以添加你需要的其他属性 ]; });
这些方法都会返回一个新的Collection,每个元素都是你想要的属性数组,完全替代原来的对象数组结构。
内容的提问来源于stack exchange,提问作者davidvera
相关产品推荐
相关产品推荐

