Eloquent创建空白条目

时间:2017-09-17 02:15:39

标签: mysql eloquent lumen

我正在使用Lumen(5.4)执行我的第一步,并且我希望将数据数组存储到数据库中。所以,我有:

MySQL rate_plans表

id PK AUTO_INCREMENT
name VARCHAR(45) NOT_NULL
slug VARCHAR(45) NOT_NULL
price FLOAT(5,2) NOT_NULL
created_at DATETIME NOT_NULL
updated_at DATETIME NOT_NULL

雄辩模型

use Illuminate\Database\Eloquent\Model as Model;

class RatePlan extends Model {

    protected $table = 'rate_plans';

    protected $dateFormat = 'Y-m-d H:i:s';

    protected $fillable = ['name', 'price'];

    protected $guarded = [];
}

问题是,Eloquent使用id,created_at和updated_at属性的正确值创建记录。但是,名称,slug是空的,价格是0.00。代码是:

$data = ['name' => 'Test', price => 99.99];
$model = new \App\Models\RatePlan();
$model->fill($data);
$model->slug = 'test';
$model->status = 'active';
$model->create();

有什么想法吗?为什么Eloquent不会因持久的空值而失败?

1 个答案:

答案 0 :(得分:0)

在laravel中,有两种创建相关模型的方法(source

  • 创建()
  • 保存()

您可以使用其中任何一个。要查看两种方法之间的差异,请参阅link

在您的代码中,您可以像这样更改

$data = ['name' => 'Test', price => 99.99];
$model = new \App\Models\RatePlan();
$model->fill($data);
$model->slug = 'test';
$model->status = 'active';
$model->save();

或者您可以在slug数组中为$data传递值,然后按以下步骤操作:

$data = [name => 'Test', slug => 'test',price => 99.99];

$model = new \App\Models\RatePlan();
$model->create($data);