<?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'仍在显示.
任何的想法 ?
手册说:
隐藏数组或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)