关于 Laravel 中 create 方法插入数据为空问题
需求问题
由于之前一直使用 ORM 的 create 插入数据,但是在近期更换了数据库名(在一个服务器中),
于是在 Model 里面的定义的 table 字段前添加了库名前缀,导致 create 插入数据为空问题
Laravel 版本 5.1
Model 代码:
// 之前是这么定义表名的,代码运行没问题
// protected $table = 'k_plus_order';
// 中间这个代码没改过
protected $fillable = ['user_id','order_num','trade_no','period_num',
'period_price','total_price','payment','pay_status','pay_time',
'vip_start_time','created_at','updated_at'];
protected $dateFormat = "U";
// 由于需要连接新的数据库,所以在表名前面添加了数据库的前缀
protected $table;
public function __construct()
{
$this->table = getenv("NEW_DATABASE").".k_plus_order";
}
由于需要连接新库,表名字段什么都没变过,只是从默认数据库变为新的数据库,
所以在表的前面加了数据库名,使用 ORM 查询没问题,但是使用 create 插入数据后,
数据库里插入了一条空的数据,只有默认字段有数据,有点像字段都没加入白名单一样。
请大佬们帮忙说一下原因!万分感谢!
模型的构造函数 改成这样
因为你覆盖模型的构造函数,导致没有执行
$this->fill(array $attributes)
来设置模型的数据。这跟你
User::create([])
插入空数据一样。别用getenv
或者你别执行
php artisan config:cache
见: 为啥代码审核大佬告诉我代码中要尽量少些 env (‘App_ENV’) === ‘local’ 这种代码