![](/img/trans.png)
[英]Laravel Eloquent: How do I refactor this eager load query into model scope method?
[英]Can I manually eager load a model with data in Laravel Eloquent?
例如說我有 Book 和 Author 模型。 我渴望像這樣加載作者:
$books = Book::with('author')->get();
但是我已經使用Author::all()
獲取了作者列表,以便在頁面的其他位置顯示它們(用於過濾的 select 字段)。 所以現在 Laravel 執行 3 個查詢:
select * from authors;
select * from books;
select * from authors where id in (1, 2, 3, ...);
第三個查詢顯然是多余的,因為我已經有了作者。 有什么方法可以將我的$authors
Collection 傳遞到我的 Book 查詢中嗎? 通過文檔和 API 搜索,找不到任何東西。
您可以使用此自定義代碼
$authors = Author::get();
$books = Book::get();
foreach ($books as $book) {
$author = $authors->where('id', $book->author_id)->first();
$book->setRelation('author', $author);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.