В моем приложении lasravel 5.7 с использованием https://github.com/Zizaco/entrust У меня проблема с использованием метода hasRole, поскольку он всегда возвращает false, даже в БД у меня есть допустимые строки.Вызов в управляющем приложении / Http / Controllers / PersonalController.php упакованный метод:
public function get($id)
{
$user = User::find($id);
$check_roles_as_text= $user->checkRolesAsText();
...
app / User.php:
<code><?php
namespace App;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Authenticatable implements JWTSubject
{
use EntrustUserTrait;
use Notifiable;
protected $primaryKey = 'id';
public function checkRolesAsText() {
$arr= [];
echo '<pre>$this->id::'.print_r($this->id,true).'
';// это показывает 5 - мой зарегистрированный пользователь // dd ($ this);// Если раскомментировать, поставьте ниже if ($ this-> hasRole (ACCESS_ROLE_ADMIN)) {$ arr [] = ACCESS_ROLE_ADMIN_LABEL;эхо '-1';} if ($ this-> hasRole (ACCESS_ROLE_MANAGER)) {$ arr [] = ACCESS_ROLE_MANAGER_LABEL;эхо '-2';} if ($ this-> hasRole (ACCESS_ROLE_CUSTOMER)) {$ arr [] = ACCESS_ROLE_CUSTOMER_LABEL;эхо -3;} echo '
$arr::'.print_r($arr,true).'
';return $ this-> concatArray ($ arr);}}
Проверка трассировки slq Я вижу, что user_id имеет значение null:
SELECT `ad_roles`.*, `ad_role_user`.`user_id` AS `pivot_user_id`, `ad_role_user`.`role_id` AS `pivot_role_id`
FROM `ad_roles`
INNER JOIN `ad_role_user` on `ad_roles`.`id` = `ad_role_user`.`role_id`
WHERE `ad_role_user`.`user_id` is null
Вывод dd ($ this):
User {#368 ▼
#primaryKey: "id"
#connection: "mysql"
#table: "users"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:19 [▼
"id" => 5
"username" => "Admin"
"email" => "admin@mail.com"
"password" => "$2y$10$vxBkNOEteK5GwP/j1VEDiutmR92XVW1ixSEEQ5ZMq6WPY4RkAO97S"
"remember_token" => null
"status" => "A"
"account_type" => "I"
"verified" => 1
"verification_token" => null
"first_name" => "Red"
"last_name" => "Song"
"phone" => "247-541-7172"
"website" => "red_song@make_vote.site.com"
"notes" => null
"creator_id" => null
"activated_at" => null
"avatar" => "5.jpeg"
"created_at" => "2018-03-25 12:39:36"
"updated_at" => "2018-05-20 19:48:03"
]
#original: array:19 [▶]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
#rememberTokenName: "remember_token"
Не знаювидите, почему в sql user_id указано значение null и как это исправить?
Спасибо!