Laravel auth 可选字段?

Laravel auth optional field?

在laravel认证

registercontroller.php

protected function create(array $data) 
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'affiliatetoken' =>Str::random(12),
        'affiliate' => $data ['affiliate'],
    ]);
}   

要求

$data ['affiliate']

已定义...如果我希望它是可选的,我可以发送一个空值吗?数据库可以为空,可能类似于

如果 $data ['affiliate'] 已定义则创建,但如果未定义则保留 null 或创建 0

使用 data_get 助手:

// 3rd argument is what to default to if the key is not set. null by default
'affiliate' => data_get($data, 'affiliate'), 

@AnkitPatel 建议 array_get 这也有效。 data_get 适用于数组和对象。

使用这个

protected function create(array $data) 
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'affiliatetoken' =>Str::random(12),
        'affiliate' => $data ['affiliate'] ?? null, // or 0 "?? operator is equivalent isset()"
    ]);
}