Larael多重数据插入错误
SQLSTATE [22007]:无效的日期时间格式:1366不正确的整数值:''对于列' unit_id'在第2行(SQL:插入
product_prices
(created_at
,product_id
,unit_id
,updated_at
)值(2016-12-06 06:56:01 ,27,1,2016-12-06 06:56:01),(2016-12-06 06:56:01,27 ,, 2016-12-06 06:56:01))
但unit_id
中的nullable();
字段
请有人帮助我
这里column_name=unit_id
答案 0 :(得分:1)
null与exrisnd不同。如果要将null设置为值,则必须在查询中将其写入:
... ('2016-12-06 06:56:01',27, null, '2016-12-06 06:56:01'))
日期时间格式也是错误的。你必须把它作为一个字符串输入。
答案 1 :(得分:1)
刚出现同样的问题,在我的情况下,我的控制器中出现了一个愚蠢的错误。
我做的是我返回整个对象而不是id,就像这样:
public function store($id, Request $request) {
$post = Post::find($id);
$comment = new Comment;
$comment->text = $request->comment;
$comment->post_id = $post; <--- HERE IS THE MISTAKE
$comment->post_id = $post->id; <--- HERE IS THE FIX
$comment->user_id = Auth::id();
$comment->save();
return back();
}
答案 2 :(得分:0)
您正在使用unit_id是否以单位(id
)引用?您为foregin键引用的列输入空值。使用 null 而不是&#39;&#39;
insert into product_prices (created_at, product_id, unit_id, updated_at)
values (2016-12-06 06:56:01, 27, 1,2016-12-06 06:56:01),
(2016-12-06 06:56:01,27,null, 2016-12-06 06:56:01);
答案 3 :(得分:0)
在查询之前为unit_id
设置0,如果 null / empty 。见例:
if(!isset($unit_id) || empty($unit_id)) $unit_id = 0;
.
.
//insert query rest code
答案 4 :(得分:0)
我遇到了相同的错误。 update_at和created_at是通过迁移自动创建的。备份模型并删除它。然后使用php artisan创建一个新模型 采用 php artisan make:model型号名称-m 然后在您的迁移表中添加所需的字段,例如。
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
然后进行迁移 php artisan migration
答案 5 :(得分:0)
我可以解决它,在发送请求时将您的有效载荷放入或发布到您的api
我应该发送此json:
{
...,
"item":1
}
但是我发了这个。这是我的错误
{
...,
"item":[{"id"=1}]
}
或 { ..., “项目”:[1] }
我在laravel中的代码是这样的:
$item= Item::find($request->input('item'));
$client->item()->associate($item);
答案 6 :(得分:0)
使用intval()
函数可以很好的解决问题。
intval($unit_id);
如果出现以下情况,此代码将返回 0
:
$unit_id
未设置。$unit_id
是字符串而不是字母数字(例如 'abc'
)。$unit_id
是 NULL
如果 $unit_id
是字母数字字符串(例如 '10'
),它将返回数字。
答案 7 :(得分:0)
在我的情况下,它通过在 insert() 函数中使用验证器来解决 将您的帖子名称传递给此
函数 if_set($v) if (isset($_POST[$v]) 和 $_POST[$v] != '') $data_to_db[$v] = $_POST[$v];