jeudi 12 octobre 2017

Laravel - belongsTo relationship in custom pivot model not working

I have a database structure where i have a many to many relationship between users and companies table. For that i have a crossreference table company_user. Also each user has a certain role in a company so the crossreference table also has a role_id. The problem is that for some reason i get an exception when i try retrieve the role from the crossreference table.

Here is how i defined the relationship in Company model:

public function users() {
    return $this->belongsToMany('App\User')->withPivot('role_id')->using('App\CompanyUser');
}

Now if i just try to get role_id from pivot everything works fine:

@foreach($company->users as $user)
     // this displays correct role_id
@endforeach

But i also need the data of the role so i defined a relationship in my custom pivot. Here is the whole model:

<?php

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class CompanyUser extends Pivot
{
    public function role()
    {
        return $this->belongsTo('App\Role');
    }
}

And i tried to access it like this:

@foreach($company->users as $user)
    
@endforeach

But this gives me an exception:

Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$id 

What am I missing?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire