Атрибут $ Laravel скрытый на модели не работает (все еще показывает скрытый, даже если я уже указал в массиве $ hidden) - PullRequest
0 голосов
/ 30 мая 2018
<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

    protected $hidden = [
        'password',
        'remember_token',
        'activated',
        'token',
    ];
}

Выше приведен список атрибутов, которые я хочу скрыть от отображения, но когда я использую

 $users = User::leftJoin('countries','users.nationality_id','=','countries.id')
            ->selectRaw("
                users.*,
                countries.name as nationality_name
            ")
            ->where('users.id','=',$user_id)
            ->get();

и после этого, когда я dd($user);, он все еще показывает скрытые атрибуты

enter image description here и, как видно на скриншоте выше, «пароль», «Remember_token», «активирован», «токен» все еще отображаются.

Любая идея?

1 Ответ

0 голосов
/ 30 мая 2018

В руководстве написано:

Скрытие атрибутов из массива или преобразования JSON

Иногда вы можете захотеть ограничить атрибуты, включенные в массив вашей модели или форму JSON, такие как пароли,Для этого добавьте определение скрытого свойства в вашу модель.

Итак, если вы попробуете

get()->toArray();

, они будут скрыты.

Тест:

dd(User::find(1)->toArray());
dd(User::find(1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...