Eloquent | 使用 with() 导致返回 NULL

3

我正在尝试在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'。 - J. Doe
这行代码 'category.id:category_images.url', 是什么意思? - Maraboc
抱歉,我打错了,现在已经编辑好代码了。我正在尝试将类别关系与图像作为关系引用,并只选择URL。 - connormiotk96
2
尝试像这样使用 'category.images:id,url',因为在文档中说到:当使用此功能时,您应始终将id列包含在要检索的列列表中。 - Maraboc
你仍应该在急切加载中选择将imagecategory相关联的列,这样Eloquent就可以将子项与其父项匹配.. 可能是category_id(不知道你如何命名键)。 - lagbox
2个回答

0

请按照以下方式使用您的查询:

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');
}

0

你需要在select语句中选择外键,以便Eloquent查询你的关联关系,就像这样:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接