2016-10-13 17 views
2

で働いていないバインディング私のモデルは関係を持っている 従業員、以下のとおりです。Laravel - 動的1対多の関係

public function company(){ 
     return $this->belongsTo('App\Company','company'); 
    } 

と関係を持っている会社、:

public function employees(){ 
     return $this->hasMany('App\Employee','company'); 
    } 

company私のemployeesテーブルのFKで、idを私のcompaniesテーブルに示しています。ティンカーで 私は、次のコマンドを実行します。

$employee = App\Employee::firstOrFail(); 
$employee->company; //returns 1 

をしかし、私は

$employee->company->name; 

OR

$employee->company->id; 

を行う場合には、エラーを返します:

PHP error: Trying to get property of non-object on line 1 
+1

私はそれが 'company'という名前の列を持ち、あなたの関係がまったく同じ名前を持っているので、その列は' $ employee'のプロパティであり、なぜオブジェクトの代わりに '1'を返すのかということです。 – Neat

+1

'dd($ employee-> company)'ならば、配列を返すか、単に '1'を返しますか? –

+0

私はそれが 'App \ Employee :: firstOrFail()'だと思います。それはタイプミスですか? –

答えて

1

おかげ@Neatその理由は、フィールドはリレーションシップメソッドと同じ名前が付けられました。 フィールドcompanyの名前をcompany_idに変更しました。