【问题标题】:Laravel 8: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer valueLaravel 8:SQLSTATE [22007]:无效的日期时间格式:1366 整数值不正确
【发布时间】:2021-07-23 20:23:16
【问题描述】:

我有一个这样的迁移:

public function up()
    {
        Schema::create('movies', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('link');
            $table->integer('year');
            $table->string('actor');
            $table->string('director');
            $table->integer('imdb');
            $table->boolean('watched')->default(0);
            $table->integer('starred');
            $table->timestamps();
        });
    }

但是当我想将一些数据存储到这个表中时,我得到了这个错误:

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

这是我的store 方法:

public function store(Request $request)
    {
        $new = new Movie();
        $new->name = $request->name;
        $new->link = $request->link;
        $new->year = $request->year;
        $new->actor = $request->actor;
        $new->director = $request->director;
        $new->imdb = $request->imdb;
        $new->starred = $request->starred;
        $new->watched = $request->watched;
        $new->save();
    }

我不知道这里出了什么问题,这向我显示了这个错误...如果你知道,请告诉我。

提前致谢。

更新 #1:dd($request) 的结果:

更新 #2: 完全错误:

Illuminate\Database\QueryException SQLSTATE[22007]:日期时间无效 格式:1366 不正确的整数值:列的“on” bia2film.movies.watched 在第 1 行(SQL:插入到 movies (name, link, year, actor, director, imdb, starred, watched, updated_at, created_at) 值(教父,asdsadsa, 1232, 白兰度, 科波拉, 9, 5, on, 2021-04-30 13:41:20, 2021-04-30 13:41:20))

【问题讨论】:

  • 您可以提出您的要求吗? dd($request); 并向我们展示结果
  • 哪个值会触发此错误?请在问题中发布完整的错误消息,不要切断它们。有两个整数字段,我们不知道您的请求中有什么。
  • @Jack 我刚刚添加了它...
  • @El_Vanja Illuminate\Database\QueryException SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'on' for column bia2film.movies.watched` 在第 1 行(SQL:插入到moviesnamelinkyear,@987654) 、directorimdbstarredwatchedupdated_atcreated_at) 值(教父、asdsadsa、1232、白兰度、科波拉、9、5、2021 年 4 月 30 日 13 日: 2021-04-30 41:20 13:41:20))`
  • $table->boolean('watched')->default(0); 但您尝试存储字符串 'on'

标签: php mysql laravel laravel-8


【解决方案1】:

从您的屏幕截图中您正在尝试将字符串值存储到布尔列

$table->boolean('watched')->default(0);

尝试更改您的架构

        $table->boolean('watched')->default(0);
    to
    
         $table->enum('watched',['on','off'])->default('off');

或将请求的值更改为Truefalse

我更喜欢Sencond方法

【讨论】:

  • 或者,如果是复选框,则 value="1"。但请注意,如果未检查该值未在 $request 中传递
猜你喜欢
  • 2021-02-14
  • 2021-04-21
  • 1970-01-01
  • 2021-08-22
  • 2017-11-04
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 2017-12-10
相关资源
最近更新 更多