我仍在学习Laravel,我正在使用雄辩来运行我的查询。在我的应用程序中,一个用户可以属于一个圆圈。圆圈包含存储库,而存储库又包含项目。我正在尝试获取属于一个圆圈内不同存储库的所有项目。
用户型号:
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
我负责处理路线的控制员在这里:
function library () {
$user = Auth::user();
$circle = $user->circle;
$repositories = $circle->repositories;
$items = $repositories->items;
return View('pages.library', compact(['user', 'circle', 'items']));
}
到目前为止,我可以检索属于一个圆的两个存储库,但无法检索属于这两个存储馆的多个项目。我在存储库上尝试了@foreach来运行这两个项目,并将项目推送到一个空数组中,但最终只得到最后一个项目。我是否缺少查询技术/步骤?
$repositories
是一个集合而非模型。因此,您不应该将$items
属性称为promit,因为它受到保护。
我知道你在寻找项目关系,所以…你需要在$repositories
和每个$repository
$项目上提交,比如:
@foreach($repositories as $repository)
@foreach($repository->items as $item)
<span>{{ $item->name }}</span>
@endforeach
@endforeach
并将其从控制器中删除:
$items = $repositories->items;