Ebe*_*amp 5 php arrays collections laravel eloquent
我还在学习 Laravel,我正在使用 eloquent 来运行我的查询。在我的应用程序中,一个用户可以属于一个圈子。圆圈包含存储库,而存储库又包含项目。我试图获取属于一个圆圈内的各种存储库的所有项目。
用户模型:
public function circle () {
return $this->belongsTo('App\Models\Circle');
}
Run Code Online (Sandbox Code Playgroud)
圆形模型:
public function users () {
return $this->hasMany('App\Models\User');
}
public function repositories () {
return $this->hasMany('App\Models\Repository');
}
Run Code Online (Sandbox Code Playgroud)
存储库模型:
public function items () {
return $this->hasMany('App\Models\Item');
}
public function circle () {
return $this->belongsTo('App\Models\Circle');
}
Run Code Online (Sandbox Code Playgroud)
商品型号:
public function repository () {
return $this->belongsTo('App\Models\Repository');
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试迭代所有项目的标记:
@foreach($items as $item)
<span>{{ $item->name }}</span>
@endforeach
Run Code Online (Sandbox Code Playgroud)
我负责处理路线的控制器在这里:
function library () {
$user = Auth::user();
$circle = $user->circle;
$repositories = $circle->repositories;
$items = $repositories->items;
return View('pages.library', compact(['user', 'circle', 'items']));
}
Run Code Online (Sandbox Code Playgroud)
截至目前,我可以检索属于一个圈子的 2 个存储库,但无法检索属于这 2 个存储库的多个项目。我已经尝试在存储库上使用 @foreach 来运行两者并将项目推送到一个空数组中,但我只得到了最后一个项目。是否有我遗漏的查询技术/步骤?
$repositories是一个集合而不是一个模型。因此,您不应该将$items财产称为舞会,因为它受到保护。
我知道您正在寻找项目关系,所以...您需要迭代$repositories每个$repository$item,例如:
@foreach($repositories as $repository)
@foreach($repository->items as $item)
<span>{{ $item->name }}</span>
@endforeach
@endforeach
Run Code Online (Sandbox Code Playgroud)
并将其从控制器中删除:
$items = $repositories->items;