Php Laravel集合查询结果
在自定义artisan命令中,我尝试使用Php Laravel集合查询结果,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,在自定义artisan命令中,我尝试使用User::all()访问模型的所有成员(例如用户) 此模型的数据库中存在记录,但命令中的User::all()只返回“illumb\database\Eloquent\Collection{3308}”,而不是实际结果。转储程序不显示集合中的任何项,只显示集合中有多少项 这似乎只发生在命令中,因为我可以使用Tinker提取结果 有人知道为什么会发生这种情况吗?Laravel使用Symfony的VarCloner类,在这个类中有$maxItems属性,该属
User::all()
访问模型的所有成员(例如用户)
此模型的数据库中存在记录,但命令中的User::all()只返回“illumb\database\Eloquent\Collection{3308}”
,而不是实际结果。转储程序不显示集合中的任何项,只显示集合中有多少项
这似乎只发生在命令中,因为我可以使用Tinker提取结果
有人知道为什么会发生这种情况吗?Laravel使用Symfony的VarCloner类,在这个类中有
$maxItems
属性,该属性被定义为默认值。($maxItems
来自父类)
如果你想得到更多的项目,你可以覆盖或扩展illumb/Support/Debug/Dumper.php
class
这是默认值
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);
}
}
拉威尔5的小调版本是什么?5.6?Foreach对集合不给出结果?@cherrysoft版本为5.6。35@DavidAuvray不,它似乎只是返回集合类,而不是该模型/queryHi Hassan的实际结果,谢谢您的回答。不幸的是,这些模型只有3个,所以不应该达到上限。例如::all()方法在正常的Tinker会话中工作良好,并返回这三个实例。但是,在artisan命令内部运行时,它只返回集合类,而不是实际数据。@A.Rahm Ops,我认为这是关于超出项目限制的。问题不清楚,你更新了我的编辑,所以…@A.Rahm你能检查laravel.log文件吗?是否有任何错误日志?没有与此相关的错误。我做了一些进一步的挖掘,我能够使用数组语法访问集合的成员,现在的主要问题似乎只是在shell内部打印出来。不管怎么说,这更方便。谢谢你的帮助!