Laravel属性$隐藏在模型上不起作用(仍显示隐藏的一个,即使我已在$ hidden数组中指定)

bat*_*hir 0 laravel laravel-5

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

    protected $hidden = [
        'password',
        'remember_token',
        'activated',
        'token',
    ];
}
Run Code Online (Sandbox Code Playgroud)

上面是我想要隐藏显示的属性列表,但是当我使用时

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

在此之后,我dd($user);仍然显示隐藏的属性

在此输入图像描述 正如您在上面的屏幕截图中看到的那样,'password','remember_token','activated','token'仍在显示.

任何的想法 ?

Mur*_*mlu 5

手册说:

隐藏数组或JSON转换的属性

有时您可能希望限制模型的数组或JSON表单中包含的属性,例如密码.为此,请向模型添加隐藏属性定义.

所以,如果你试试

get()->toArray();
Run Code Online (Sandbox Code Playgroud)

他们将被隐藏.

测试:

dd(User::find(1)->toArray());
dd(User::find(1));
Run Code Online (Sandbox Code Playgroud)