Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation from model call by not view in Laravel 4

荒凉一梦 提交于 2019-12-07 04:51:13

问题


I have a model, Ability, which belongs to another model AbilityType.

    <?php
class Ability extends Eloquent {

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

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

I can make this call in my blade template successfully:

$ability->abilityType->name

But when I make that same call in my Ability model, it throws an exception:

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

Do the dynamic properties differ in behavior between view and model layer? What am I missing here?


回答1:


Laravel uses a special getFooAttribute syntax to load dynamic properties:

class Ability extends Eloquent {

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

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

}


来源:https://stackoverflow.com/questions/20731849/relationship-method-must-return-an-object-of-type-illuminate-database-eloquent-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!