2015-02-16 4 views
0

Я пытаюсь применить функцию, чтобы получить значение группы, структура выглядит:функция 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

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');