Ao tentar mostrar a Categoria do Produto, estou recebendo a seguinte mensagem: Trying to get property of non-object. Codigo da listagem.blade.php
@extends('layout.principal')
@section('conteudo')
<h1>Listagem de produtos</h1>
@if(empty($produtos))
<div class="alert alert-danger">
Você não tem nenhum produto cadastrado.
</div>
@else
<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->categoria->nome}} </td>
<td><a href="/produtos/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
</table>
@endif
@if(old('nome'))
<div class="alert alert-success">
<strong>Sucesso!</strong> O produto {{old('nome')}} foi adicionado.
</div>
@endif
@stop
Substituindo a marcação $p->categoria->nome por $p->categoria, retornou a um JSON no campo:
{"id":1,"nome":"Eletronico","created_at":"-0001-11-30 00:00:00","updated_at":"-0001-11-30 00:00:00"}
Codigo do Model Categoria
<?php namespace estoque;
use Illuminate\Database\Eloquent\Model;
class Produto extends Model {
public $timestamps = false;
protected $fillable = array('nome', 'valor', 'quantidade','descricao','tamanho','categoria_id');
protected $guarded = ['id'];
//
public function categoria(){
return $this->belongsTo('estoque\Categoria');
}
}
Codigo do Model Produto:
<?php namespace estoque;
use Illuminate\Database\Eloquent\Model;
class Categoria extends Model {
//
public function produtos(){
$this->hasMany('estoque\Produto');
}
}
Migrate da tabela Categoria
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCategoriasTable extends Migration {
public function up()
{
Schema::create('categorias', function(Blueprint $table)
{
$table->increments('id');
$table->string('nome',100);
$table->timestamps();
});
}
public function down()
{
Schema::drop('categorias');
}
}
Migrate da adição do relacionamento na tabela Produto
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AdicionaRelacionamentoProdutoCategoria extends Migration {
public function up()
{
Schema::table('produtos',function(Blueprint $table){
$table->integer('categoria_id');
});
}
public function down()
{
Schema::table('produtos',function(Blueprint $table){
$table->dropColumn('categoria_id');
});
}
}