laravel 嵌套预加载 如何为每个关联指定字段?

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

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

这样写只能指定 contacts 的字段。 如何指定author字段?

阅读 7.3k
3 个回答

试试下面这样,没有验证过

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

select中的字段一定要包含表关联的外键字段,否则会查不到结果。

下面这样即指定了author和contacts关系的查询字段, 参考 https://implode.io/X5CmLG

Book::with(['author:id,name', 'author.contacts:email,user_id'])->get();

写两个关系分别指定呗,一个author,一个author.contacts。即使你不指定author,只使用author.contacts他也会查2条sql的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题