Trying to get property 'name' of non-object Laravel Eloquent Error pulling foreign key data [duplicate]

0

I'm trying to use relationships to display data on the screen but I get the following error:

  

Trying to get property 'name' of non-object

In this command

$recebimento->planoconta()->get()->first()->nome

MODEL ACCOUNT PLAN

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Planoconta extends Model
{
    //
    protected $table = 'plano_contas';

    protected $fillable = [
        'tipo', 'nome', 
    ];

    public function pagamento():hasMany{
        return $this->hasMany('App\Pagamento', 'plano_contas_id');
    }

    public function recebimento():hasMany{
        return $this->hasMany('App\Recebimento', 'plano_contas_id');
    }



}

MODEL RECEIPTS

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Cliente;
use Planoconta;

class Recebimento extends Model
{
    //
    protected $table = 'recebimentos';

    protected $fillable = [
        'data_emissao','data_venci','documento','parcela', 'valor', 'cliente_id','plano_contas_id', 'descricao',
    ];

    public function cliente():BelongsTo{
        return $this->BelongsTo('App\Cliente');

    }

    public function planoconta():BelongsTo{
        return $this->BelongsTo('App\Planoconta');

    }


}

HTML

@foreach($recebimentos as $recebimento)
   <tr class="itemRecebimento{{$recebimento->id}}">
       <td>{{$recebimento->id}}</td>
       <td>{{$recebimento->data_receb}}</td>
       <td>{{$recebimento->valor}}</td>
       <td>{{$recebimento->cliente()->get()->first()->nome}}</td>
       <td>{{$recebimento->planoconta()->get()->first()->nome}}</td>                                
       <td><button class="btnOpenUpdateRecebimento btn btn-info" data-id="{{$recebimento->id}}" data-data_receb="{{$recebimento->data_receb}}" data-valor="{{$recebimento->valor}}" data-cliente_nome="{{$recebimento->cliente()->get()->first()->nome}}" data-cliente_id="{{$recebimento->cliente()->get()->first()->id}}" data-plano_contas="{{$recebimento->plano_contas}}" > <span class="fa fa-pencil"></span></button>
                                    <button class="delete-recebimento btn btn-danger" data-id="{{$recebimento->id}}" data-data_receb="{{$recebimento->data_receb}}" data-valor="{{$recebimento->valor}}" data-cliente_nome="{{$recebimento->cliente()->get()->first()->nome}}" data-cliente_id="{{$recebimento->cliente()->get()->first()->id}}" ><span class="fa fa-trash"></span></button>
        </td>
       </tr>
   @endforeach

CUSTOMER MODEL WHICH IS WORKING AND IS EXACTLY EQUAL

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\hasMany;
use Recebimento;

class Cliente extends Model
{
    ////
    protected $table = 'clientes';

    protected $fillable = [
        'nome', 'cpf', 'endereco', 'numero', 'cep', 'complemento', 'bairro', 'celular', 'telefone', 'cidade', 'estado', 'email',
    ];


    public function recebimento():hasMany{
        return $this->hasMany('App\Recebimento', 'cliente_id');
    }
}
    
asked by anonymous 15.02.2018 / 14:28

1 answer

0
public function recebimento():hasMany{
    return $this->hasMany('App\Recebimento', 'plano_contas_id', 'id');
}

public function planoconta():BelongsTo{
    return $this->BelongsTo('App\Planoconta', 'id', 'id');
}

Important to always enter the fields!

    
15.02.2018 / 16:47