Laravel工匠的无限递归

时间:2016-08-24 15:02:28

标签: php laravel eloquent laravel-5.2 artisan

我总是使用var_dump调试我的代码,并经常var_dump进行调试。

到目前为止,我一直在使用Laravel大约一个月,从第一天开始,我遇到了无限递归的烦人情况,这让我重新启动计算机。

我仍然不确定是什么导致这种情况,但可能是Eloquent系列。让我写这个问题的最后一段代码是:

model Applicant.php

public function resumes(){
        return $this->hasMany('\MyApp\Resume');
}

我将$applicant保存到会话中,并在视图中保存:

var_dump(Session::get('applicant')->resumes());

我理解正确的方法是->resumes,称它为属性而不是方法,但我很想知道为什么这会让我的Ubuntu崩溃,内存不足,迫使我重新启动。

有没有办法配置工匠来防止这种情况发生?它为什么会发生?!

@edit

当我执行不使用->get()->all()

之类的操作时会发生同样的问题
var_dump(Model::where('field',$val));

1 个答案:

答案 0 :(得分: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([]);
}