Ainda estou aprendendo o Laravel e estou usando o eloquent para executar minhas consultas. Em meu aplicativo, um usuário pode pertencer a um círculo. O círculo contém repositórios, que por sua vez contêm itens. Estou tentando obter todos os itens que pertencem a vários repositórios dentro de um círculo.
Modelo de usuário:
public function circle () {
return $this->belongsTo('App\Models\Circle');
}
Modelo de círculo:
public function users () {
return $this->hasMany('App\Models\User');
}
public function repositories () {
return $this->hasMany('App\Models\Repository');
}
Modelo de Repositório:
public function items () {
return $this->hasMany('App\Models\Item');
}
public function circle () {
return $this->belongsTo('App\Models\Circle');
}
Modelo de item:
public function repository () {
return $this->belongsTo('App\Models\Repository');
}
Aqui está a marcação em que estou tentando iterar em todos os itens:
@foreach($items as $item)
<span>{{ $item->name }}</span>
@endforeach
Meu controlador responsável por lidar com a rota está aqui:
function library () {
$user = Auth::user();
$circle = $user->circle;
$repositories = $circle->repositories;
$items = $repositories->items;
return View('pages.library', compact(['user', 'circle', 'items']));
}
A partir de agora, posso recuperar 2 repositórios pertencentes a um círculo, mas não posso recuperar os vários itens que pertencem a esses 2 repositórios. Eu tentei um @foreach nos repositórios para executar ambos e enviar os itens em uma matriz vazia, mas acabei apenas com o último item. Existe uma técnica / etapa de consulta que estou perdendo?
$repositories
é uma coleção, não um modelo. Portanto, você não deve chamar a $items
propriedade de prom porque está protegida.
Eu sei que você está procurando a relação de itens, então ... Você precisa iterar sobre $repositories
e sobre cada $repository
$ item como:
@foreach($repositories as $repository)
@foreach($repository->items as $item)
<span>{{ $item->name }}</span>
@endforeach
@endforeach
E remova isso do controlador:
$items = $repositories->items;
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras