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

时间:2018-05-30 04:41:10

标签: 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',
    ];
}

上面是我希望隐藏显示的属性列表,但是当我使用

 $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 正如您在上面的屏幕截图中看到的那样,&#39;密码&#39;,         &#39; remember_token&#39 ;,         &#39;激活&#39 ;,         &#39;令牌&#39;仍在显示。

任何想法?

1 个答案:

答案 0 :(得分:5)

手册说:

  

隐藏数组或JSON转换的属性

     

有时您可能希望限制其中包含的属性   您的模型的数组或JSON格式,例如密码。为此,请添加   隐藏属性定义到您的模型。

所以,如果你试试

get()->toArray();

他们将被隐藏。

测试:

dd(User::find(1)->toArray());
dd(User::find(1));