2016-10-27 2 views
1

Допустим, у нас есть 2 модели, со следующими соотношениями:Laravel 4,2 красноречив: получить все() + связанные колонки

пользователей:

public function BookCode() { 
    return $this->hasOne('BookCode'); 
} 

BookCode:

public function User() { 
    return $this->belongsTo('User'); 
} 

Теперь мы d хотел бы получить все записи от пользователя с book_code из BookCode (пустой, если нет) в виде массива. Возможно ли подобное? Единственное, что я придумал, который, кажется, очень медленно (занимает 30 секунд для выполнения), был:

$users = User::all(); 

foreach($users as $user) { 
    $users_array[] = array(
     $user->first_name, 
     $user->last_name, 

     // this is very slow 
     $user->BookCode['book_code'], 
     $user->created_at, 
     $user->updated_at, 
    ); 
} 

Можно ли получить массив пользователей со связанными book_codes «в один присест»? Не удалось найти какое-либо решение для этого в течение 5 часов.

ответ

2

Установите отношения, которые должны быть загружены.

$users = User::with('BookCode')->get(); 
Смежные вопросы