【问题标题】:Laravel Nested Eager Loading and selectLaravel 嵌套急切加载和选择
【发布时间】:2019-07-29 15:24:55
【问题描述】:

当我尝试这样的嵌套渴望加载时

 $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);

我只得到带有空pages 的父模型(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": []
}

【问题讨论】:

    标签: laravel eloquent eager-loading


    【解决方案1】:

    我最近遇到了类似的问题。

    由于您急切地加载选择列,首先确保您已在我们的迁移表上设置主键可能会有所帮助。

    其次,我还可以通过将 外键 传递给您正在访问的关系作为选择参数来解决我的问题。例如:

    ...
    
    },'pages.articles'=> function ($query) {
        $query->select('id', 'page_id', 'images','areas');
    
    ...
    

    【讨论】:

      【解决方案2】:

      你忘了指明你的外键:

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

      【讨论】:

        【解决方案3】:

        我是这样解决的

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

        是的,关于外键

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-30
          • 2015-08-16
          • 2015-11-17
          • 1970-01-01
          相关资源
          最近更新 更多