2016-08-10 2 views
0

У меня есть Eloquent (Laravel 5,1) отношения, как:Может ли Eloquent Relationship автоматически включать реверс ребенка?

class Form extends Model { 

    public function fields(){ 
    return $this->hasMany('App\Models\Field'); 
    } 

} 

class Field extends Model { 

    public function form(){ 
    return $this->belongsTo('App\Models\Form'); 
    } 

    public function getFullTitleAttribute(){ 
    return $this->form->title . ', ' . $this->title; 
    } 

} 

У меня есть несколько процессов, которые выглядят вверх форму, то для каждого поля, сделать что-то с атрибутом full_title (который зависит от формы месторождения) , например,

$form = Form::first(); 
foreach($form->fields as $field){ 
    echo $field->full_title . "\n"; 
} 

проблема заключается в том, что каждое поле делает запрос к базе данных для поиска формы, это тонны ненужного трафика.

Есть ли способ обновить отношения так, чтобы объект Field уже имел ссылку в памяти объекта Form, который создал его?

ответ

1

неаккуратное решение я использую, везде Я использую форма-> поле отношений, я явно сказать неправдоподобные Филдс об их форме:

$form = Form::first(); 
foreach($form->fields as $field){ 
    $field->setRelation('form', $form); // Saved you a query 
    echo $field->full_title . "\n"; 
} 

Это более производительное, но это Безразлично» Кажется очень ... Красноречивый.