【问题标题】:Eloquent | Using with() resulting in NULL bring returned雄辩 |使用 with() 导致返回 NULL
【发布时间】:2018-12-21 13:22:20
【问题描述】:

我正在尝试在 Laravel 中使用 Eloquent 来运行查询。我正在使用with() 函数从关系中获取结果,但是这总是返回null

这是我的代码:

Posts::query()
    ->select('id')
    ->with([
        'author:id',
        'category.images:url',
     ]);

使用getQueryLog() 函数转储查询,如果我在具有相同绑定的 SQL 客户端内运行查询,我会返回结果,但是响应看起来像这样...

{
    id: 1,
    category: {
       id: 1,
       category_images: null
    }
}

我试过用谷歌搜索这个问题,但实际上找不到任何东西。

提前致谢。

【问题讨论】:

  • 试试'category.category_images',
  • 这行'category.id:category_images.url',是什么意思?
  • 对不起,我打错了,现在编辑代码。我正在尝试将与图像的类别关系作为一种关系来引用,然后选择 url。
  • 试试这个'category.images:id,url', 因为在doc 中说:When using this feature, you should always include the id column in the list of columns you wish to retrieve.
  • 你还是应该在eager load中选择imagecategory相关的那一列,这样eloquent就可以把孩子匹配到他们的父母..也许category_id(不知道你怎么命名键)

标签: php sql laravel eloquent


【解决方案1】:

像这样使用您的查询:

Posts::query()->select('id')->with([ 'author', 'category' ])->get();

在帖子模型中

public function author()
{
   return $this->belongsTo('Authors::class', 'author_id', 'id')->select('id');
}



public function category()
{
  return $this->belongsTo('Categories::class', 'category_id', 'id')->select('id', 'images.id', 'images.url');
}

【讨论】:

    【解决方案2】:

    你必须在 select 语句中选择你的外键,让 Eloquent 查询你的关系,像这样:

    Posts::query()
        ->select('id', 'author_id', 'category_id')
        ->with([
            'author:id',
            'category.images:url',
        ]);
    

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 2020-02-18
      • 2018-01-14
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 2017-11-05
      • 2014-10-23
      • 1970-01-01
      相关资源
      最近更新 更多