关系上的Laravel函数返回对未定义方法的调用

时间:2015-02-16 13:18:59

标签: php oop laravel

我尝试应用函数来获取组的值,结构如下:

  • 用户
      • GroupPermissions

我有什么:

模特用户

class User extends Eloquent {

 public function group(){
    return $this->belongsTo("Group");
}

模型

class Group extends Eloquent {

 public function GroupPermissions(){
    return $this->hasMany("GroupPermissions");
}

模型 GroupPermissions

class GroupPermissions extends Eloquent {

 public function group(){
    return $this->belongsTo("Group");
}

public function getPermission($permission){
    return $this->first()->$permission;
}

我收到此错误:

Call to undefined method Illuminate\Database\Eloquent\Collection::getPermission()

1 个答案:

答案 0 :(得分:1)

GroupPermissions()将返回一个集合作为结果。不是一个模型。所以你不能只在它上面调用getPermission()

你可以直接做到这一点:

$group = Group::find(1);
$permission = $group->GroupPermissions()->first()->foo;

或者将该功能放在组模型中:

public function getPermission($permission){
    return $this->GroupPermissions()->first()->$permission;
}

用法:

$group = Group::find(1);
$permission = $group->getPermission('foo');