Php 嵌套的HasAngel函数

Php 嵌套的HasAngel函数,php,laravel,laravel-5,eloquent,laravel-5.3,Php,Laravel,Laravel 5,Eloquent,Laravel 5.3,当前逻辑设置: $audits = Room::where('id', $room_id) ->has('objects.scores') ->get(); public function objects() { return $this->hasMany('App\Object'); } public function scores() { return $thi

当前逻辑设置:

$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');
    }
  • 一个房间可以有许多物品
  • 一个物体可以有很多分数
--问题是对象可能/可能没有任何分数。

场景: 我只想根据我提供的
room\u 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');
    }
我发现它返回所有的对象,即使只有几个对象有分数

关系(房间):

$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');
    }
关系(对象):

$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');
    }
关系(分数):

$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');
    }
如何反向查询?或者正确的方法!我只想要与它们相关联的分数的对象,以及与它们相关的任何对象(房间等)


非常感谢。

您的对象模型中缺少关系声明,您应该将

关系(对象):


嵌套关系查询的点表示法看起来不错;我觉得这应该会返回正确的结果(只有
房间
对象
分数
。您如何定义
房间
中的
对象
关系?另外,我想知道这是否是使用
hasManyThrough()的好例子
relationship?@camelCase,我已经在描述中添加了对象关系。“dd(Room::where('id',$Room\u id)->has('objects.scores')->toSql();”显示了什么?