在我的模型(Customer
)上,我有一个必需的参数:$contactId
。
执行Customer::create(['contactId' => $contactId])
时出现以下错误:
“ message”:“ SQLSTATE [HY000]:常规错误:1364字段'contactId'没有默认值(SQL:插入
customers
(updated_at
,created_at
)值(2019-12-10 12:33:46,2019-12-10 12:33:46))“
在插入语句中找不到contactId字段。 contactId
的值设置为4
,对应于通过FK
在数据库中的正确值。
Customer
表的迁移:
`Schema::create('customers', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
$table->bigInteger('contactId')->unsigned();
$table->foreign('contactId', 'FK_customer_contactId_contact_id')
->references('id')
->on('contacts');
});`
是什么导致Eloquent
在此处无法创建正确的插入语句?我已经在整个流程和数据库中三遍检查了contactId
的拼写。
当我手动向customers
中插入一行时,检索数据和contact
-关系没有问题。
感谢您的时间!
答案 0 :(得分:7)
在$fillable
模型中设置contactId Customer
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = ['contactId'];
}
答案 1 :(得分:3)
如果您使用create
方法将数据保存到数据库中,那么必须在模型中写入此fillable
属性
<?php
class Customer extends Model
{
protected $fillable = ['contactId'];
}
答案 2 :(得分:2)
在模型中使contactId $ fillable
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = ['contactId'];
}
或
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $guarded = [];
}