2017-02-20 9 views
0

Я использую Laravel 5.1 с MongoDB, мне нужно, чтобы отобразить список пользователей на лезвии, я использую метод отношения Laravel (hasMany), я пытался, но я получилПоказать значение из отношений laravel?

error(Undefined property: Illuminate\Database\Eloquent\Collection::$roles) 

Таблица структуры:

users-> userid, username,email, roleid. 
user_roles->roleid,rolename; 

мой вопрос прост, я хочу, чтобы userdetails из таблицы пользователя с помощью имени ролика, я приложил свой результат запроса image.any suggestesstion, пожалуйста? Контроллер:

$users =User::with('roles')->get(); 
return view('Manage_users', compact('users')); 

Модель пользователя:

class User extends Eloquent 
{ 
    protected $collection = 'users'; 

    public function roles() 
    { 
     return $this->hasMany('App\User_role','roleid','roleid'); 
    } 

} 

User_roles Модель:

class User_role extends Eloquent 
{ 
    protected $collection = 'user_roles'; 


    public function user() 
    { 
     return $this->belongsTo('App\User','roleid','rolename'); 
    } 
} 

My query result image

My view page result

ответ

0

Вы ошибаетесь с красноречием и отношениями. Пользователь принадлежит к роли, роль имеет много пользователей.

от пользователя Модель:

public function role() 
{ 
    return $this->belongsTo('App\User_role','roleid','id'); 
} 

от модели user_roles:

public function users() 
{ 
    return $this->hasMany('App\User','roleid','id'); 
} 
+0

Пользователь может иметь несколько ролей. что вы думаете @ ray-cheng? –

+0

Нет, у одного пользователя есть только одна роль –

+0

@VaibhavrajRoham, у одного пользователя есть одна роль, из структуры таблицы вы можете это получить. –

0

вы можете использовать следующий код в вашем представлении.

<table> 
    <tr> 
     <th>User Name</th> 
     <th>Role</th> 
    </tr> 
    @foreach($users as $user) 
     <tr> 
      <td>{{ $user->username }}</td> 
      <td>{{ $user->roles->rolename }}</td> 
     </tr> 
    @endforeach 

</table> 

Выше кода создаст таблицу с именем пользователя и ее ролью.

Надеюсь, это поможет вам!

+0

в соответствии с [ссылкой на изображение] (https://i.stack.imgur.com/TDqa0.png) выше ответ должен работать –

+0

, он показывает ошибку «Попытка получить свойство не-объекта» –

+0

Он не сработает (как ошибка), если для пользователя не назначена роль. –

0

в обновлении контроллера код для этого

$users = User::with('roles')->whereHas('roles', function ($query) { 
            $query->where('roleid', '>', 0); 
           })->get(); 
return view('Manage_users', compact('users')); 
+0

Его возвращающийся пустой массив, Коллекция {# 215 ▼ #items: [ ] } –

+0

@MuMuthukumar Возможно ли, что некоторые пользователи не могут назначить какую-либо роль? –

+0

Нет, все пользователи играют определенную роль как администратор, подрядчик, инспектор –

0

Its работать после того, как я изменить свое лезвие, как это, спасибо за все

@foreach($users as $user) 
    <tr> 
     <td>{{ $user->username }}</td> 
     <td> 
      @if ($user->roles) 
       {{ $user->roles->rolename }} 
      @endif 
     </td> 
    </tr> 
@endforeach 
Смежные вопросы