2013-12-22 17 views
5

我有一個模型Ability,它屬於另一個模型AbilityType。關係方法必須從模型調用返回一個類型爲Illuminate Database Eloquent Relations Relation的對象通過在Laravel 4中未查看

<?php 
class Ability extends Eloquent { 

    public function abilityType() { 
     return $this->belongsTo('AbilityType'); 
    } 

    public function name() { 
     return $this->abilityType->name; 
    } 
} 

我可以讓我的刀模板此調用成功:

$ability->abilityType->name 

但是當我做,在我的能力模型相同的調用,它拋出一個異常:

ErrorException Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation 

待辦事項視圖和模型圖層之間的動態屬性有所不同?我在這裏錯過了什麼?

+0

你能告訴你如何從內部調用'abilityType' /你的模型的代碼?應該只是:'$ this-> abilityType-> name',或者在控制器'Ability :: find(1) - > abilityType-> name'中。 –

回答

7

Laravel使用一種特殊的語法getFooAttribute加載動態屬性:

class Ability extends Eloquent { 

    public function abilityType() 
    { 
     return $this->belongsTo('AbilityType'); 
    } 

    public function getNameAttribute() 
    { 
     return $this->abilityType->name; 
    } 

} 
相關問題