鍍金池/ 問答/PHP  網(wǎng)絡安全/ laravel 嵌套預加載 如何為每個關(guān)聯(lián)指定字段?

laravel 嵌套預加載 如何為每個關(guān)聯(lián)指定字段?

clipboard.png
官方的案例: 如何為分別為author 和 contacts 指定字段?

App\Book::with(['author.contacts' => function ($query) {
            $query->select(['選定的字段']);
        }])->get()

這樣寫只能指定 contacts 的字段。 如何指定author字段?

回答
編輯回答
尐潴豬

下面這樣即指定了author和contacts關(guān)系的查詢字段, 參考 https://implode.io/X5CmLG

Book::with(['author:id,name', 'author.contacts:email,user_id'])->get();
2017年3月8日 02:03
編輯回答
乖乖瀦

寫兩個關(guān)系分別指定唄,一個author,一個author.contacts。即使你不指定author,只使用author.contacts他也會查2條sql的。

2018年8月11日 04:21
編輯回答
初念

試試下面這樣,沒有驗證過

App\Book::with(['author' => function ($query) {
        $query->select(['選定的字段']);
        $query->with(['contacts' => function ($query) {
            $query->select(['選定的字段']);
        }]);
    }])->get()

select中的字段一定要包含表關(guān)聯(lián)的外鍵字段,否則會查不到結(jié)果。

2018年5月4日 09:38