SQLSTATE [22007]:无效的日期时间格式:1366不正确的整数值:' column_name'在Laravel

时间:2016-12-06 07:09:34

标签: php mysql laravel pivot-table laravel-5.3

Larael多重数据插入错误

  

SQLSTATE [22007]:无效的日期时间格式:1366不正确的整数值:''对于列' unit_id'在第2行(SQL:插入product_pricescreated_atproduct_idunit_idupdated_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

8 个答案:

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

如果 $unit_id 是字母数字字符串(例如 '10'),它将返回数字。

答案 7 :(得分:0)

在我的情况下,它通过在 insert() 函数中使用验证器来解决 将您的帖子名称传递给此

函数 if_set($v) if (isset($_POST[$v]) 和 $_POST[$v] != '') $data_to_db[$v] = $_POST[$v];