php 如何使用默认值插入到数据库用户?

iyfamqjs  于 2023-01-16  发布在  PHP
关注(0)|答案(2)|浏览(128)

我想注册用户,我有3个领域的形式;登录名、密码和确认密码。在数据库中,我有loginpasswordrole列。因此,我想插入默认角色为User的数据库用户。下面的代码显示错误SQLSTATE[HY000]: General error: 1364 Field 'role' doesn't have a default value。如何解决此问题?

pod7payv

pod7payv1#

您需要使用SQL客户端添加/修改“角色”列,可能您尚未为其定义默认值,并且该列为“非空”,这意味着如果该列为空,则无法插入行。
另一种选择是在create函数中添加类似的内容:

$user = User::create([
    'login' => $data['login'],
    'password' => Hash::make($data['password']),
    'role' => "User"
]);
nimxete2

nimxete22#

如果您只创建角色为“用户”的用户,则可以在创建用户时添加此行;

protected function create(array $data)
    {
        $user = User::create([
            'login' => $data['login'],
            'password' => Hash::make($data['password']),
            'role'=>"User"
        ]);
        $user->assignRole('role');
        return $user;
}

也可以使用观察者:

class UserObserver
{
    /**
     * Handle the "User" created event.
     *
     * @param User $user
     * @return void
     */
    public function creating(User $user)
    {
        if (is_null($user->role)) {
            $user->role= "User";
            $user->save();
        }
    }
}

相关问题