口才使用with()导致NULL带来返回

时间:2018-07-13 08:02:56

标签: php sql laravel eloquent

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

这是我的代码:

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

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

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

我尝试谷歌搜索这个问题,但真的找不到任何东西。

谢谢。

3 个答案:

答案 0 :(得分:0)

切换方法:

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

急于加载特定列

     

您可能并不总是需要所检索关系中的每一列。因此,Eloquent允许您指定要检索的关系的哪些列:

$users = App\Book::with('author:id,name')->get();

Eager Loading

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