首页 > 解决方案 > Laravel 5.4 - instanceof Collection 在被传递时不返回 true 似乎是一个 Collection

问题描述

我正在使用一种instanceof Collection检查方法:

if ($group instanceof Collection) {
    $group = $group->pluck('name');
}

许多地方都在使用它,所以我无法更改它(不是我想要的),但我确实想传入一组组名。我正在像这样实例化我的收藏:

$group = collect(['one', 'two', 'three']);

当我dd使用 $group 变量时,它看起来像一只鸭子,

Collection {#612
  #items: array:3 [
    0 => "one"
    1 => "two"
    2 => "three"
  ]
}

但在该 instanceof 检查中返回 false。任何想法为什么会这样?

标签: phplaravellaravel-5eloquent

解决方案


您的问题是instanceof正在检查 Eloquent 的扩展实例Collection

use Illuminate\Database\Eloquent\Collection;

如果您更改use基础集合类,它应该可以工作:

use Illuminate\Support\Collection;

推荐阅读