我在 Laravel 5.4 中为 Voyager 管理面板包创建管理员用户时遇到问题
I have issue in creating admin user for Voyager Admin panel package in Laravel 5.4
使用此命令安装 voyage 包后:
php artisan voyager:install
我需要使用此命令创建管理员用户:
php artisan voyager:admin your@email.com --create
然后输入名称和密码
问题是在输入用户名和密码后返回此错误
General error: 1364 Field 'employee_name' doesn't have a default value
(SQL: insert into employee
(email
) values (admin@admin.com))
并且我已经有一个数据库,但具有不同的命名约定,例如:
用户 table 我称其为员工,名称字段称为 employee_name
我的问题是,有没有什么方法可以将 voyager 中的预期字段映射到我数据库中的实际字段,因为我无法更改它们?
提前致谢。
当您执行此命令时,Voyager creates a new user 为您使用批量分配功能。
因此,将 $fillable
添加到 User
模型中:
protected $fillable = ['name', 'email', 'password'];
由于您更改了用户模型的正常结构并且可能 运行 与其他尝试添加用户的包出现类似问题,您可以在用户模型中创建一个 boot() 方法来设置它->employee_name 到 this->name 然后取消设置 this->name 以便当来自其他包的记录尝试使用 name 属性时,您将其更正为 employee_name 属性。
根据记忆,这超出了我的头脑,因此它可能涉及更多 'logic' 但我认为如果您查看引导方法,您会发现您可以执行此类操作。我用它来自动填充基于动态值的列。
HTH
General error: 1364 Field 'employee_name' doesn't have a default value
您可以在您的数据库中将默认值设置为空,这可以解决问题
使用 Mutator 将任何将数据添加到 'name' 列的尝试引用到 'employee_name'。
针对您的情况:
App\User.php
public function setNameAttribute($value)
{
$this->attributes['employee_name'] = $value;
}
使用此命令安装 voyage 包后:
php artisan voyager:install
我需要使用此命令创建管理员用户:
php artisan voyager:admin your@email.com --create
然后输入名称和密码
问题是在输入用户名和密码后返回此错误
General error: 1364 Field 'employee_name' doesn't have a default value (SQL: insert into
employee
(
并且我已经有一个数据库,但具有不同的命名约定,例如: 用户 table 我称其为员工,名称字段称为 employee_name
我的问题是,有没有什么方法可以将 voyager 中的预期字段映射到我数据库中的实际字段,因为我无法更改它们?
提前致谢。
当您执行此命令时,Voyager creates a new user 为您使用批量分配功能。
因此,将 $fillable
添加到 User
模型中:
protected $fillable = ['name', 'email', 'password'];
由于您更改了用户模型的正常结构并且可能 运行 与其他尝试添加用户的包出现类似问题,您可以在用户模型中创建一个 boot() 方法来设置它->employee_name 到 this->name 然后取消设置 this->name 以便当来自其他包的记录尝试使用 name 属性时,您将其更正为 employee_name 属性。
根据记忆,这超出了我的头脑,因此它可能涉及更多 'logic' 但我认为如果您查看引导方法,您会发现您可以执行此类操作。我用它来自动填充基于动态值的列。
HTH
General error: 1364 Field 'employee_name' doesn't have a default value
您可以在您的数据库中将默认值设置为空,这可以解决问题
使用 Mutator 将任何将数据添加到 'name' 列的尝试引用到 'employee_name'。
针对您的情况:
App\User.php
public function setNameAttribute($value)
{
$this->attributes['employee_name'] = $value;
}