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