我试图在Laravel中使用Eloquent来运行查询。我正在使用with()
函数以便从关系中获取结果,但是,它总是返回null
。
这是我的代码:
Posts::query()
->select('id')
->with([
'author:id',
'category.images:url',
]);
使用getQueryLog()
函数转储查询,并且如果我在具有相同绑定的SQL客户端中运行查询,则会返回结果,但是响应看起来像这样...
{
id: 1,
category: {
id: 1,
category_images: null
}
}
我尝试谷歌搜索这个问题,但真的找不到任何东西。
谢谢。
答案 0 :(得分:0)
切换方法:
Posts::with([
'author:id',
'category.images:id,url',
])->get();
急于加载特定列
您可能并不总是需要所检索关系中的每一列。因此,Eloquent允许您指定要检索的关系的哪些列:
$users = App\Book::with('author:id,name')->get();
答案 1 :(得分:0)
您必须在select语句中选择外键,以便Eloquent查询您的关系,如下所示:
Posts::query()
->select('id', 'author_id', 'category_id')
->with([
'author:id',
'category.images:url',
]);
答案 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');
}