2016-08-24 5 views
3

Я всегда отлаживаю свой код с помощью var_dump, а я делаю var_dump - довольно часто.Бесконечная рекурсия на ремесленника Laravel

Я использую Laravel в течение месяца, и с первого дня у меня возникает раздражающая ситуация с бесконечной рекурсией, что заставляет меня перезагрузить компьютер.

Я все еще не уверен, что вызывает это, но, возможно, красноречие коллекции. Последний кусок кода, который заставил меня написать этот вопрос был:

модельной 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

Вы можете попробовать сохранить ключ модели на сессии вместо модели?

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([]); 
}