Olá gelera, boa tarde!
Eu tenho o seguinte erro:
Trying to get property of non-object (View: C:\Users\Kaiser\Desktop\laravel\estoque\resources\views\produtos\listagem.blade.php)
No meu listagem está assim:
@foreach ($laravel as $p)
<table class="table table-hover">
<tr class="{{ $p->quantidade <=1 ? 'bg-danger' : ''}}">
<td class="col-md-4"> {{$p->nome}} </td>
<td class="col-md-2"> {{$p->valor}} </td>
<td class="col-md-2"> {{$p->descricao}} </td>
<td class="col-md-2"> {{$p->quantidade}} </td>
<td class="col-md-2"> {{$p->tamanho}} </td>
<td class="col-md-2"> {{$p->categoria->nome}} </td>// ESTA LINHA
<td>
//... continua. código omitido
Se eu tentar pegar só $p->categoria dá certo, mas tentando pegar o nome eu obtenho erro. E obviamente eu pegando a categoria inteira recebo um array não sendo essa minha intenção.
No meu controller o método lista está assim:
public function lista(){
$laravel = laravel::all();
return view('produtos.listagem')->with('laravel', $laravel);
}
Lembrando também que o 'categoria' não pertence a mesma tabela do 'laravel', tem a sua própria.
Os meus models estão da seguinte forma:
use Illuminate\Database\Eloquent\Model;
class laravel extends Model {
protected $table = 'laravel';
public $timestamps = false; // Não quero marcação de tempo
protected $fillable = array('nome', 'descricao', 'quantidade', 'valor', 'tamanho', 'categoria_id'); // categoria foi adicionado aqui <-
protected $guarded = ['id', 'created_at', 'update_at'];// ??? o que isso faz
//protected $fillablee = array('nome');
public function categoria(){
return $this->belongsTo('estoque\Categoria'); // E declarado aqui como pertencente
}
}
Model do Categoria:
<?php namespace estoque;
use Illuminate\Database\Eloquent\Model;
class Categoria extends Model {
public function produtos (){
$this->hasMany('estoque\laravel');
}
}
Eu não sei ao certo o porque está acontecendo esse erro e se alguém puder me ajudar eu ficaria muito agradecido.