Laravel 嵌套预加载并选择

标签 laravel eloquent eager-loading

当我尝试像这样嵌套 Eager 加载时

 $journal = Journal::with(['pages','pages.articles'])->select('id','titre','date')->findOrFail($id);

这是可行的,但是当我尝试为嵌套关系添加选择以仅获取像这样的特定列时:

 $journal =Journal::with(['pages'=> function ($query) {
        $query->select('id','thumbnail');
    },'pages.articles'=> function ($query) {
        $query->select('id','images','areas');
    }])->findOrFail($id);

我只得到带有空页面的父模型(Journal)

  {
   "id": 3,
   "numero": "2219",
   "titre": "J2219",
   "date": "2018-12-13",
   "created_at": "2019-01-03 10:16:59",
   "updated_at": "2019-01-08 11:04:42",
   "deleted_at": null,
   "pages": []
}

最佳答案

我是这样解决的

$content =Journal::with(['pages:id_journal,id','pages.articles:id_page,titre'])->select('id','titre','date')->findOrFail($id);

是的,关于外键

关于Laravel 嵌套预加载并选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55048919/

相关文章:

php - Laravel Eloquent : is SQL injection prevention done automatically?

使用新模型和防护的 Laravel 身份验证失败 : Undefined index: model

ruby-on-rails-3 - 预加载与复杂查询的关联

nhibernate - 使用 Fluent NHibernate/Nhibernate 和 Automapping 快速加载

mysql - 启动 mariadb 时出错 - 没有这样的过程

Laravel Spark 不显示存储在/storage/app/public/profiles/目录中的图像

mysql - 获取具有关系的嵌套 json 数据 Laravel Eloquent 模型

JPA @OneToMany 不获取 child

php - Laravel 不在生产服务器上显示图像

mysql - 向表中添加外键