laravel:转换为json时,缺少雄辩的all()数据

时间:2019-01-24 05:41:19

标签: php laravel eloquent

将Eloquent对象设置为Json时,无法获取部分数据。

  1. 我使用命令artisan make:Auth和自定义的用户表。

具体来说,我认为我不需要一次删除电子邮件列,
但是由于有必要,所以我再次添加了它。
这些操作使用迁移文件。

  1. 我获得了用户表的所有数据,并用Json返回了它。

但是不会输出电子邮件。

class UserController extends Controller
{
    public function index() {
        return User::all();
    }
}

即使使用json_encode也会做同样的事情。


使用时存在

$user = User::all();
$userArray = array();
foreach ($user as $u){
    $userArray[] = [
        'name' => $u->name,
        'email' => $u->email
    ];
}
return $userArray;

为什么不输出电子邮件?

(我依靠Google翻译)


附加说明

感谢大家发表评论。
将json的输出与dd()进行比较,除了电子邮件之外,未输出密码和Remember_token。

也许电子邮件是私有财产,而私有财产是一种不输出JSON的机制?
在这种情况下,我该如何公开?

用户模型看起来像这样

class User extends Authenticatable
{
    use Notifiable;
    use SoftDeletes;

    protected $table = 'users';
    protected $dates = ['deleted_at'];
    protected $primaryKey = 'uuid';
    protected $keyType = 'string';
    public $incrementing = false;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'email','remember_token',
    ];
~~~
}

2 个答案:

答案 0 :(得分:1)

我自己解决了。
我发现此处设置的列不会输出到JSON。

protected $hidden = [
        'password', 'email','remember_token',
];

这是一件非常简单的事情。...

答案 1 :(得分:0)

尝试:

return User::select('name', 'email')->get()->toArray();