Php Laravel/无法访问受保护的属性\Database\elounce\Collection::$items

Php Laravel/无法访问受保护的属性\Database\elounce\Collection::$items,php,arrays,laravel,collections,eloquent,Php,Arrays,Laravel,Collections,Eloquent,我还在学习Laravel,我正在使用Elount来运行我的查询。在我的应用程序中,用户可以属于一个圈子。圆圈包含存储库,而存储库又包含项目。我试图在一个圆圈内获取属于不同存储库的所有项目 用户模型: public function circle () { return $this->belongsTo('App\Models\Circle'); } 圆形模型: public function users () { return $this->hasMany('App\Mod

我还在学习Laravel,我正在使用Elount来运行我的查询。在我的应用程序中,用户可以属于一个圈子。圆圈包含存储库,而存储库又包含项目。我试图在一个圆圈内获取属于不同存储库的所有项目

用户模型:

public function circle () {
  return $this->belongsTo('App\Models\Circle');
}
圆形模型:

public function users () {
  return $this->hasMany('App\Models\User');
}

public function repositories () {
  return $this->hasMany('App\Models\Repository');
}
存储库模型:

public function items () {
  return $this->hasMany('App\Models\Item');
}

public function circle () {
  return $this->belongsTo('App\Models\Circle');
}
项目模型:

public function repository () {
  return $this->belongsTo('App\Models\Repository');
}
以下是我尝试迭代所有项目的标记:

  @foreach($items as $item)
      <span>{{ $item->name }}</span>
  @endforeach

到目前为止,我可以检索属于一个圆圈的两个存储库,但无法检索属于这两个存储库的多个项目。我在存储库上尝试了@foreach来运行这两个项目,并将其推送到一个空数组中,但最后只得到了最后一个项目。有没有我遗漏的查询技术/步骤?

$repositories
是一个集合,而不是一个模型。因此,您不应该调用
$items
属性,因为它受保护

我知道你在找物品,所以。。。您需要对
$repositories
和每个
$repository
$项进行分级,如:

@foreach($repositories as $repository)
    @foreach($repository->items as $item)
        <span>{{ $item->name }}</span>
    @endforeach
@endforeach
@foreach($repositories作为$repository)
@foreach($repository->items as$item)
{{$item->name}
@endforeach
@endforeach
并将其从控制器中移除:


$items=$repositories->items

非常感谢您,这起作用了。然而,我正试图更清楚地理解这一点。所以控制器中的实例化对象可以访问其“属于”方法。利用这种方法,我们可以创建关联模型的新实例。但是,当我们对hasMany执行相同操作时,我们正在检索一个集合。那么,你会建议我避免从集合中获取集合吗?这是一种不好的做法吗?我应该避免这种情况吗?还是应该这样做?你会建议我在“items”表上放置一个“circle\u id”外键吗?这样我就可以抓取与所讨论的circle模型相关联的所有项,而不是创建存储库的实例并进一步将其分解为项实例,或者这是一种糟糕的做法?
@foreach($repositories as $repository)
    @foreach($repository->items as $item)
        <span>{{ $item->name }}</span>
    @endforeach
@endforeach