在自定义工匠命令中,我试图使用User::all()
访问模型的所有成员(例如用户)。
此模型的数据库中存在记录,但命令中的User :: all()只返回"Illuminate\Database\Eloquent\Collection {#3308}"
而不是实际结果。 Dumper不会在集合中显示任何项目,只显示集合中有多少项目
这似乎只发生在命令中,因为我能够使用Tinker来提取结果。
有谁知道为什么会发生这种情况?
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);
}
}