【问题标题】:SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Null' for column. Laravel 8SQLSTATE [HY000]:一般错误:1366 不正确的整数值:列的“空”。拉拉维尔 8
【发布时间】:2022-01-11 20:32:36
【问题描述】:

我正在尝试使用 update 方法将 null 插入到我的 kisi_id 表中,但我收到了这样的错误

SQLSTATE[HY000]:一般错误:1366 不正确的整数值:列的“Null”。

当我更改 value=0 时出现类似错误

SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行。

Kisiler 迁移

 public function up()
    {
        Schema::create('kisilers', function (Blueprint $table) {
            $table->id();
            $table->string ('ad_soyad',100);
            $table->enum('kadro',['İdari','Anaokulu','İlköğretim','Lise','Destek','Yönetim']);
            $table->string ('birim_zumre');
            $table->timestamps();
        });
    }

Envanter 迁移

  public function up()
    {
        Schema::create('envanters', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('kisi_id')->default(null)->nullable();   
            $table->string('urun_cesidi');
            $table->string('urun_marka');
            $table->string('urun_model');
            $table->string('urun_ozellik')->nullable();
            $table->string('seri_no')->nullable();   
            $table->enum('okul',['İdari','Lise','İlköğretim','Anaokulu','Yönetim','Destek']);
            $table->timestamps();
            $table->foreign('kisi_id')->nullable()->references('id')->on('kisilers')->onDelete('set null');
        });
    }

资源控制器

public function update(ZimmetUpdateRequest $request, $id)
    {
       
        $envanter =Envanter::find($id) ?? abort(404,'Ürün Bulunamadı');
        
        Envanter::where('id',$id)->update($request->except(['urun_cesidi','urun_marka','urun_model','urun_ozellik','seri_no','_method','_token']));
        return redirect()->route('envanter.index',$id)->withSuccess('Zimmetten Çıkarma İşlemi Başarılı.');
    }

Envanter 模型

use HasFactory;
    protected $nullable;
    protected $fillable=['urun_cesidi','urun_marka','urun_model','urun_ozellik','kisi_id','okul','seri_no'];

    public function kisiler(){
        return $this->belongsTo('App\Models\Kisiler','id');
    }

Kisiler 模型

  use HasFactory;
    
    protected $fillable=['ad_soyad','kadro','birim_zumre'];

    public function envanter(){
        return $this->hasMany('App\Models\Envanter','kisi_id');
    }

blade.php

<div class="m-1"><form method="POST" action="{{route('zimmetsil.update',$envantergoster->id)}}">
                            @csrf
                            @method('PUT')
                            <button class="btn btn-success" type="submit" name='kisi_id' value=0 >Unassigned</button></form>
                            </div>  

【问题讨论】:

    标签: php html laravel null nullable


    【解决方案1】:

    使用此代码进行迁移:

    ->onDelete('cascade');
    

    【讨论】:

    • 我希望 envanters 表可以重复使用。
    【解决方案2】:

    你不必这样做

    ->default(null)
    

    关于您的迁移。只是

    ->nullable()
    

    会起作用。请试试这个方法。


    你得到了

    value=0
    

    错误,因为您的“kisi_id”引用了“kisilers”,但没有 id=0 的记录


    最后,

    $envanter =Envanter::find($id) ?? abort(404,'Ürün Bulunamadı');
    

    不要这样做。替换为

    $envanter =Envanter::findOrFail($id);
    

    编辑:

    改变这个:

    Envanter::where('id',$id)->update($request->except(['urun_cesidi','urun_marka','urun_model','urun_ozellik','seri_no','_method','_token']));
            
    return redirect()->route('envanter.index',$id)->withSuccess('Zimmetten Çıkarma İşlemi Başarılı.');
    

    到这里:

    $envanter->update($request->except(['urun_cesidi','urun_marka','urun_model','urun_ozellik','seri_no','_method','_token']));
                
    return redirect()->route('envanter.index',$id)->withSuccess('Zimmetten Çıkarma İşlemi Başarılı.');
    

    【讨论】:

      猜你喜欢
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      相关资源
      最近更新 更多