Laravel 的 Artisan 的无限递归
Posted
技术标签:
【中文标题】Laravel 的 Artisan 的无限递归【英文标题】:Infinite recursion on Laravel's Artisan 【发布时间】:2016-12-31 19:15:10 【问题描述】:我总是用var_dump
's 调试我的代码,而且我经常使用var_dump
-ing。
到目前为止,我已经使用 Laravel 大约一个月了,从第一天开始,我就遇到了无限递归的烦人情况,这让我重新启动计算机。
我仍然不确定是什么原因造成的,但可能是 Eloquent 集合。让我写下这个问题的最后一段代码是:
模型申请人.php
public function resumes()
return $this->hasMany('\MyApp\Resume');
我将$applicant
保存到会话中,并且在视图中我做了:
var_dump(Session::get('applicant')->resumes());
我知道正确的方法是->resumes
,称它为属性而不是方法,但我很想知道为什么这会使我的 Ubuntu 崩溃、内存不足、迫使我重新启动。
有没有办法配置 artisan 来防止这种情况发生?为什么会这样?!
@edit
当我在没有->get()->all()
的情况下执行类似的操作时,也会出现同样的问题
var_dump(Model::where('field',$val));
【问题讨论】:
【参考方案1】:您可以尝试将模型密钥保存到会话而不是模型吗?
Session::put('applicant_id',$applicant->getKey());
那么什么时候取回它
public function getApplicantFromSession()
static $applicant;
if(is_null($applicant))
$applicant = Applicant::find(Session::get('applicant_id'));
return $applicant;
然后要获得我会使用的简历:
public function getApplicantResumes()
$applicant = $this->getApplicantFromSession();
if(!is_null($applicant))
return $applicant->resumes;
return collect([]);
【讨论】:
以上是关于Laravel 的 Artisan 的无限递归的主要内容,如果未能解决你的问题,请参考以下文章