【问题标题】:Except doesn't work with Laravel Collections除了不适用于 Laravel 集合
【发布时间】:2017-10-02 14:14:13
【问题描述】:

我有以下代码:

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

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

  dd($object_copied->all());

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

【问题讨论】:

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


    【解决方案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,所以您应该如果您不想在集合中包含第一个模型,则仅在此处传递数字键。

    【讨论】:

      【解决方案2】:

      试试$object_copied = collect($object )->except('id', 'prefix', 'prototypes');

      【讨论】:

      • 同样的结果
      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      相关资源
      最近更新 更多