Laravel Collection查询结果

时间:2018-08-30 09:48:08

标签: php laravel laravel-5 eloquent

在自定义工匠命令中,我尝试使用User::all()访问模型的所有成员(例如,用户)。

该模型的数据库中存在记录,但是命令中的User :: all()仅返回"Illuminate\Database\Eloquent\Collection {#3308}"而不是实际结果。 Dumper不会显示集合中的任何项目,而只是显示集合中有多少个项目

这似乎仅在命令内发生,因为我能够使用Tinker提取结果。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

Laravel使用Symfony的VarCloner类,并且在该类中具有$maxItems属性,该属性定义为默认值2500。 ($maxItems来自父类)

如果您想获得更多物品,可以覆盖或扩展Illuminate/Support/Debug/Dumper.php

这是默认设置

public function dump($value)
    {
        if (class_exists(CliDumper::class)) {
            $dumper = 'cli' === PHP_SAPI ? new CliDumper : new HtmlDumper;
            $dumper->dump((new VarCloner)->cloneVar($value));
        } else {
            var_dump($value);
        }
    }

但是您可以说您想转储更多物品;

public function dump($value)
{
    if (class_exists(CliDumper::class)) {
        $dumper = 'cli' === PHP_SAPI ? new CliDumper : new HtmlDumper;
        $cloner = new VarCloner;
        $cloner->setMaxItems(4000);
        $dumper->dump($cloner->cloneVar($value));
    } else {
        var_dump($value);
    }
}