belongsTo - Dúvida
Bom dia. Por favor, veja se pode me ajudar com isso.
Fiz o relacionamento gestor para muitos centrosdelucro e funcionou ok.
Agora preciso do contrário. Pegar o centro de luro e associar (muitos) para um (gestor)
Minha model centrolucro
public function gestor()
{
return $this->belongsTo(Gestor::class);
}
Controller Centro Lucro
public function index()
{
$centrocustos = Centrocusto::All();
foreach($centrocustos as $centrocusto)
{
$gestors = $centrocusto->gestor()->get();
}
return view('admin.cadastros.centrocusto.index', compact('centrocustos', 'gestors'));
}
Index
@foreach($centrocustos as $centrocusto)
<tr>
<td>{{$centrocusto->codigo}}</td>
<td>{{$centrocusto->descricao}}</td>
<td>
@foreach ($gestors as $gestor)
{{ $gestor->nome }}
@endforeach
</td>
<td><span class="label label-primary">Ativo</span></td>
<td></td>
<td><a href="{{url("/centrocusto/$centrocusto->id/edit")}}">Editar</a> |
<a href="{{url("/centrocusto/$centrocusto->id")}}">Exclui</a></td>
</tr>
@endforeach
Carlos, boa tarde.
Vendo a aula seguinte eu coloquei o with e trouxe tudo conforme seu exemplo. Então meu controller ficou assim
public function index()
{
$centrocustos = Centrocusto::where('codigo', 'LIKE', '%4%')->with('gestor')->get();
foreach($centrocustos as $centrocusto)
{
$gestors = $centrocusto->gestor();
}
return view('admin.cadastros.centrocusto.index', compact('centrocustos', 'gestors'));
}
Mas não consigo mostrar no view o gestor->nome
Eu fiz os testes no Controller e funciona perfeitamente.
MAs na VIEW só mostra o último gestor e não o relacionado.
<td>
@foreach ($gestores as $gestor)
@if ( count($gestores) > 0)
{{ $gestor->nome }}<br>
@else
{{ $gestor->nome }}
@endif
@endforeach
</td>
Olá, Marcos!
O método belongsTo() é usado para relacionamentos Many to One.
Para relacionar Many to Many o método correto é: belongsToMany()
Mas, quero reforçar que o relacionamento Many to Many só é quando tem uma tabela pivô.
A lógica que criou no controller ficou errada.
Quando cria uma variável dentro de um loop de repetição só vai pegar o valor do último loop...
Não precisa fazer o loop no controller.
Veja como fica:
public function index()
{
$centrocustos = Centrocusto::where('codigo', 4)->with('gestor')->get();
$gestors = $centrocusto->gestor;
return view('admin.cadastros.centrocusto.index', compact('centrocustos', 'gestors'));
}
Agora um favor que quero te pedir, quando for abrir tickets, com por exemplo relacionados a relacionamentos de tabelas, abre em uma aula semelhante, porque ajuda outros alunos com a mesma dúvida! :-)
Qualquer dúvida só me retornar.
Abs;
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!