Laravel Collection查询结果

问题描述 投票:2回答:1

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

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

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

有谁知道为什么会发生这种情况?

php laravel laravel-5 eloquent
1个回答
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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.