Laravel 关系上的函数 returns 调用未定义的方法

Laravel function on a relationship returns call to undefined method

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

我有:

型号用户

class User extends Eloquent {

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

型号:

class Group extends Eloquent {

 public function GroupPermissions(){
    return $this->hasMany("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()

GroupPermissions() 将 return 一个集合作为结果。不是一个单一的模型。所以你不能只调用 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');