下面是我的注册控制器的一段代码。如您所见,每个字段都有一个值,但是不会插入数据库中。如果没有值,我已经为数据库中的这些字段配置了默认值。它给行没有默认值。我无法找出问题所在。我还可以在模型中填写所有字段。
protected function create(array $data)
{
$user = Account::create([
'wallet' => $data['wallet'],
'email' => $data['email'],
'balance' => 0,
'uqid' => rand(10000000,99999999) ,
'ref' => 0,
]);
$gnl = General::first();
$track = Track::create([
'account_id' => $user->id,
'speed' => $gnl->dhs_free,
'balance' => 0,
'uqid' => rand(10000000,99999999) ,
'ref' => 0,
]);
帐户模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Account extends Model
{
protected $fillable = ['wallet','uqid','ref','bstatus','refcom','email','verified'];
public function deposit()
{
return $this->hasMany('App\Deposit','id','account_id');
}
public function withdraw()
{
return $this->hasMany('App\Withdraw','id','account_id');
}
public function track()
{
return $this->hasMany('App\Track','id','account_id');
}
跟踪模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Track extends Model
{
protected $fillable = array( 'account_id','speed','withdraw','status');
public function account()
{
return $this->belongsTo('App\Account');
}
}
答案 0 :(得分:0)
使用create函数时,似乎您没有填写表中的所有字段。
要么确保您正在为create()函数中的所有字段分配值,要么确保数据库中存在默认值。在构建器中,使用-> default(0)之类的东西。
答案 1 :(得分:0)
在您的代码中可以识别的几件事:
首先,“模型”和“创建”方法中的列数和名称不同:
Account
模型包含:
protected $fillable = ['wallet','uqid','ref','bstatus','refcom','email','verified'];
但是您的创建包含:
'wallet' => $data['wallet'],
'email' => $data['email'],
'balance' => 0,
'uqid' => rand(10000000,99999999) ,
'ref' => 0,
创建不包含bstatus,refcom等...列,但这些列存在于模型和数据库表中。
类似地,Track
模型包含:
protected $fillable = ['account_id','speed','withdraw','status'];
但是它的创建包含:
'account_id' => $user->id,
'speed' => $gnl->dhs_free,
'balance' => 0,
'uqid' => rand(10000000,99999999) ,
'ref' => 0,
现在,如果您在create()
函数中未指定的列没有在数据库中指定任何默认值,您将得到:
错误:行没有默认值
解决方案要么使用迁移将值添加到create()
的那些列中,要么将这些列标记为nullable
。