2017-10-12 15 views
0
Edit: 
I dont think its the same issue as: 
https://stackoverflow.com/questions/40022929/laravel-relationship-error-undefined-property-illuminate-database-eloquent-col 
because in that issue hasMany relationship is used which returns an array but i used belongsTo which should return a certain object. 

私は、ユーザーと企業のテーブルの関係が多岐にわたるデータベース構造を持っています。そのために、私は相互参照テーブルcompany_userを持っています。また、各ユーザは会社内で特定のロールを持ち、相互参照テーブルにもrole_idがあります。問題は、何らかの理由で、相互参照テーブルからロールを取得しようとすると例外が発生することです。私はちょうどピボットすべてからROLE_IDを取得しようとする場合は正常に動作今カスタムピボットモデルのLaravel-belongsTo関係が動作しない

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

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

しかし、私はまたのデータを必要とする。ここ

は、私は、当社モデルの関係を定義した方法です役割は私のカスタムピボットの関係を定義しました。ここでは、全体のモデルである:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Relations\Pivot; 

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

、私はこのようにそれにアクセスしようとしました:

@foreach($company->users as $user) 
    {{$user->pivot->role()->id}} 
@endforeach 

しかし、これは私に例外与える:

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

は、私が何をしないのですか?

+0

可能な複製に変更してみてください[Laravel関係のエラー:未定義のプロパティを:雄弁\コレクション\ \データベースを照らす:: $ IDを1行目](https://stackoverflow.com/questions/ 40022929/laravel-relationship-error-undefined-property-illuminate-database-eloquent-col) –

答えて

2

@foreach($company->users as $user) 
    {{$user->pivot->role->id}} 
@endforeach 
+1

良い答え - OPの元のコードに何が間違っていたのか、それ! – sgress454

関連する問題