Я использую Laravel 5.5 с библиотекой Zizaco Entrust.
https://github.com/Zizaco/entrust
Я устанавливаю модели для ролей, разрешений и пользователей в соответствии с документацией.
Таблица пользователей:
+----+-------+-----------------+--+
| id | name | email | |
+----+-------+-----------------+--+
| 2 | admin | admin@admin.com | |
+----+-------+-----------------+--+
Роли Таблица
+----+-------+
| id | name |
+----+-------+
| 1 | admin |
+----+-------+
таблица role_user
+---------+---------+
| user_id | role_id |
+---------+---------+
| 2 | 1 |
+---------+---------+
Однако
$user = User::with('roles')->where('id', 4)->get();
Возвращает пустой массив для roles
[
{
"id": 2,
"name": "Admin",
"email": "admin@admin.com",
"created_at": "2018-11-07 11:11:24",
"updated_at": "2018-11-07 11:24:51",
"deleted_at": null,
"company_id": 1,
"active": true,
"roles": []
}
]
User.php
class User extends Authenticatable
{
use EntrustUserTrait;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'company_id', 'active'
];
protected $casts = [
'active' => 'boolean',
];
protected $hidden = [
'password', 'remember_token'
];
}