【问题标题】:Nested hasMany eager loading Laravel function嵌套的 hasMany 急切加载 Laravel 函数
【发布时间】:2017-02-13 19:42:51
【问题描述】:

当前逻辑设置:

  • 一个房间可以有很多对象。
  • 一个对象可以有很多分数。

-- 问题是对象可能有也可能没有任何分数。

场景: 我只想根据我提供的room_id 检索具有数字的对象。

已尝试:

$audits = Room::where('id', $room_id)
            ->has('objects.scores')
            ->get();

我发现它返回了所有对象,尽管实际上只有几个对象有分数。

关系(房间):

  public function objects()
    {
        return $this->hasMany('App\Object');
    }

关系(对象):

 public function scores()
    {
        return $this->hasMany('App\Scores');
    }

关系(分数):

   public function object()
    {
        return $this->belongsTo('App\Object');
    }

如何反向查询?或者正确的方法!我只想要与它们相关联的分数的对象,以及与它们相关的任何东西(房间等)

非常感谢。

【问题讨论】:

  • 嵌套关系查询的点表示法看起来不错;我觉得这应该返回正确的结果(只有Rooms 有一个Object 有一个Score。你如何定义Room 中的object 关系?而且,我想知道这是否可能是使用hasManyThrough() 关系的好案例?
  • @camelCase,我已经在描述中添加了对象关系。
  • 什么是“dd(Room::where('id', $room_id)->has('objects.scores')->toSql());”显示?

标签: php laravel laravel-5 eloquent laravel-5.3


【解决方案1】:

你的对象模型中缺少关系声明,你应该把

关系(对象):

public function scores()
{
    return $this->hasMany('App\Scores');
}
public function room()
{
    return $this->belongsTo('App\Rooms');
}

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 2023-03-20
    • 2014-12-28
    • 2015-08-16
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多