Olá pessoal!
Estou enfrentando um erro ao tentar buscar as minhas categorias do banco de dados. Quando chamo
{{$p->categoria_id}}
ele trás os valores, mas quando eu chamo {{$p->categorias->nome}}
ele não trás os nomes.
O erro apresentado é Trying to get property of non-object
, sei que já existe uma pergunta com esse erro aqui no forum, mas no caso dele era um erro de sintaxe.
listagem.blade.php
@extends('layout.principal')
@section('conteudo')
@if(empty($produtos))
<div class="alert alert-danger">
Você não tem nenhum produto cadastrados!
</div>
@else
<h1>Listagem de produtos</h1>
<table class=" table table-striped table-bordered table-hover">
@foreach ($produtos as $p)
<tr class="{{$p->quantidade <=1 ? 'danger' : ''}}">
<td> {{$p->nome}} </td>
<td> {{$p->valor}} </td>
<td> {{$p->descricao}} </td>
<td> {{$p->quantidade}} </td>
<td> {{$p->tamanho}} </td>
<td> {{$p->categorias->nome}} </td>
<td>
<a href="{{action('ProdutoController@mostra', $p->id)}}">
<span class="glyphicon glyphicon-search"></span>
</a>
</td>
<td>
<a href="{{action('ProdutoController@remove', $p->id)}}">
<span class="glyphicon glyphicon-trash"></span>
</a>
</td>
<td>
<a href="{{action('ProdutoController@alterar', $p->id)}}">
<span class="glyphicon glyphicon-edit"></span>
</a>
</td>
</tr>
@endforeach
@endif
</table>
<h4>
<span class="label label-danger pull-right">
Um ou menos itens no estoque.
</span>
</h4><br>
@if(old('nome'))
<div class="alert alert-success">
Produto {{old('nome')}} adicionado com sucesso!
</div>
@endif
@stop
</code>
<code>ProdutoController.php</code>
<?php
namespace estoque\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Request;
use Validator;
use estoque\Produto;
use estoque\Categoria;
use estoque\Http\Requests\ProdutoRequest;
class ProdutoController extends Controller{
public function __construct()
{
$this->middleware('auth', ['only' => ['adiciona', 'remove', 'alterar']]);
}
public function Lista(){
$produtos = Produto::all();
return view('produto.listagem')->with('produtos', $produtos);
}
public function mostra($id){
$produto = Produto::find($id);
if(empty($produto)){
return "Esse produto não existe";
}
return view('produto.detalhes')->with('p', $produto);
}
public function remove($id){
$produto = Produto::find($id);
$produto->delete();
return redirect()->action('ProdutoController@Lista');
}
public function formulario(){
return view('produto.formulario')->with('categorias', Categoria::all());
}
public function adiciona(ProdutoRequest $request){
Produto::create($request->all());
return redirect()->action('ProdutoController@Lista')->withInput(Request::only('nome'));
}
public function listaJson(){
$produtos = Produto::all();
return response()->json($produtos);
}
public function alterar($id){
$produto = Produto::find($id);
$categorias = Categoria::all();
return view('produto.alterar')->with('p', $produto)->with('categorias', $categorias);
}
public function alterado(ProdutoRequest $request, $id){
$produto = Produto::find($id);
$params = $request->all();
$produto->update($params);
return redirect()->action('ProdutoController@Lista');
}
}
Alguém pode me ajudar?