我有以下代码:
$object = Object::with("prototypes.fields")->findOrFail($id)->get();
$object_copied = $object->except(['id', 'prefix', 'prototypes']);
dd($object_copied->all());
最后一行返回的集合应包含以下字段:'id', 'prefix', 'prototypes'
答案 0 :(得分:1)
第一件事:
$object = Object::with("prototypes.fields")->findOrFail($id)->get();
这可能是错误的。
你应该使用:
$object = Object::with("prototypes.fields")->findOrFail($id);
或
$object = Object::with("prototypes.fields")->get();
第二件事是你真正想要实现的目标。如果您只想获得一些列,except
方法可能不是您真正想要使用的方法。在这种情况下,更好的选择是从数据库获取数据或使用select
方法时使用map
。
假设在$object
中你有使用except
的对象集合,你将只从方法中删除一些对象(具有给定键的对象),这些集合中的键将是数字0,1,... x所以如果你不想在集合中包含第一个模型,你应该只传递数字键。
答案 1 :(得分:0)
尝试$object_copied = collect($object )->except('id', 'prefix', 'prototypes');