Могу ли я вручную загрузить модель с данными в Laravel Eloquent? - PullRequest
3 голосов
/ 01 ноября 2019

Например, скажем, у меня есть книжные и авторские модели. Я хотел бы загрузить авторов следующим образом:

$books = Book::with('author')->get();

Но я уже получил список авторов с Author::all(), чтобы отобразить их в другом месте на странице (поле выбора для фильтрации). Итак, теперь Laravel выполняет 3 запроса:

select * from authors;
select * from books;
select * from authors where id in (1, 2, 3, ...);

Третий запрос явно излишен, так как у меня уже есть авторы. Есть ли способ передать мою коллекцию $authors в мой запрос Book? Просматривал документы и API и ничего не нашел.

1 Ответ

0 голосов
/ 01 ноября 2019

Вы можете использовать этот пользовательский код

$authors = Author::get();
$books = Book::get();

foreach ($books as $book) {
    $author = $authors->where('id', $book->author_id)->first();
    $book->setRelation('author', $author);
}
...