数据库不在laravel中插入值?

时间:2019-02-23 15:39:55

标签: php laravel

下面是我的注册控制器的一段代码。如您所见,每个字段都有一个值,但是不会插入数据库中。如果没有值,我已经为数据库中的这些字段配置了默认值。它给行没有默认值。我无法找出问题所在。我还可以在模型中填写所有字段。

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');
    }
}

2 个答案:

答案 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