Home > database >  SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Null' for column. Laravel 8
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Null' for column. Laravel 8

Time:01-11

I am trying to insert null into my kisi_id table using update method and I am getting an error like this

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Null' for column.

When i change value=0 getting error like

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row.

Kisiler Migration

 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 Migration

  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');
        });
    }

Resource Controller

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 Model

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 Model

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

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

blade.php

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

CodePudding user response:

use this code to migration:

->onDelete('cascade');

CodePudding user response:

you don't have to do

->default(null)

on your migration. just

->nullable()

will work. please try this way.


and you are getting

value=0

error because your "kisi_id" references "kisilers" but there is no record with id=0


and lastly,

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

dont do this. replace it with

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

EDIT:

change this:

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ı.');

to this:

$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ı.');
  •  Tags:  
  • Related