2013-03-21 7 views
1

Я создаю приложение в Laravel, в котором пользователи имеют роль.Laravel one to many relationship

Я установил модель пользователя с помощью return $this->belongs_to('Role'), а модель ролей - return $this->has_many('User'), а таблица базы данных пользователей - столбец role_id.

Мой вопрос заключается в чтении, а также в обновлении роли через пользовательскую модель. Ниже код, что я не пытался, но до сих пор не повезло:

Контроллер

return View::make('admin.users.index')->with('users', User::paginate(50)); 
// Also tried User::with('role')->paginate(50) which doesn't help 

Посмотреть

@foreach($users->results as $user) 

    {{ $user->role->role }} // Trying to get property of non-object 
    {{ $user->role()->role }} // Undefined property 

    {{ var_dump($user->role) }} 

    // Outputs 
    object(Role)#39 (5) { 
     ["attributes"]=> 
      array(4) { 
       ["id"]=> string(1) "2" 
       ["role"]=> string(4) "User" 
       ["created_at"]=> string(19) "0000-00-00 00:00:00" 
       ["updated_at"]=> string(19) "0000-00-00 00:00:00" 
      } 
     ["original"]=> 
      array(4) { 
       ["id"]=> string(1) "2" 
       ["role"]=> string(4) "User" 
       ["created_at"]=> string(19) "0000-00-00 00:00:00" 
       ["updated_at"]=> string(19) "0000-00-00 00:00:00" 
      } 
     ["relationships"]=> 
      array(0) { 
      } 
     ["exists"]=> bool(true) 
     ["includes"]=> 
      array(0) { 
      } 
    } 

@endforeach 

И обновление это же история - $user->role = Input::get('role') не работает.

Я, очевидно, что-то пропустил, может ли кто-нибудь показать мне правильный способ сделать это?

ответ

0

Проверьте это: http://vespakoen.github.com/authority-laravel/

Это расслоение ACL Authority для Laravel. Там пользователь может иметь от 1 до n ролей, поэтому он использует this->has_many_and_belongs_to.

+0

Спасибо за отзыв, но я специально ищу, как работать с отношениями от одного до многих, а не с многими из многих – PaulK

0

Как вы можете видеть, роль возвращает массив, поэтому вы должны обращаться к нему как массив

правильный путь для доступа к нему будет

$ user-> роль [0] -> идентификатор