除了不适用于Laravel Collections

时间:2017-05-04 11:54:37

标签: laravel laravel-5 eloquent laravel-5.4 laravel-collection

我有以下代码:

  $object = Object::with("prototypes.fields")->findOrFail($id)->get();

  $object_copied = $object->except(['id', 'prefix', 'prototypes']);

  dd($object_copied->all());

最后一行返回的集合应包含以下字段:'id', 'prefix', 'prototypes'

2 个答案:

答案 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');