簡體   English   中英

我可以使用 Laravel Eloquent 中的數據手動急切加載 model 嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM