First project on laravel : When I am going to delete row it throws an Error : SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails. My controller function
public function delete(Request $request) {
try {
Venue::findOrFail($request->id)->delete();
} catch (\Exception $ex) {
return response()->json([
'error' => $ex->getCode(),
'message' => $ex->getMessage()
]);
}
return response()->json([
'message' => trans('admin.venue.delete_success')
]);
}
Model :
protected static function boot()
{
parent::boot();
self::deleting(function (Venue $venue) {
$venue->occasions()->delete();
$venue->contact()->delete();
$venue->gallery()->delete(); // here i am gtng error
$venue->venueParameter()->delete();
});
}
Error in detail :
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
red_carpet
.media
, CONSTRAINTmedia_gallery_id_foreign
FOREIGN KEY (gallery_id
) REFERENCESgalleries
(id
)) (SQL: delete fromgalleries
wheregalleries
.source_id
= 2 andgalleries
.source_id
is not null andgalleries
.source_type
= App\Venue)
Schema of table :
Schema::create('venues', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('client_id');
$table->string('name');
$table->string('logo');
$table->unsignedInteger('venue_type_id');
$table->boolean('is_premium');
$table->boolean('is_verified');
$table->string('tripadvisor_url')->nullable();
$table->enum('status',['Active','Inactive']);
$table->timestamps();
$table->foreign('client_id')->references('id')->on('clients');
$table->foreign('venue_type_id')->references('id')->on('venue_types');
});
Schema::create('galleries', function (Blueprint $table) {
$table->increments('id');
$table->string('source_type');
$table->unsignedInteger('source_id');
$table->string('title');
$table->unsignedInteger('sort_order');
$table->enum('status',['Active','Inactive']);
$table->timestamps();
});
Schema::create('media', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('gallery_id');
$table->enum('type',['Image','Video']);
$table->string('caption');
$table->string('path')->nullable();
$table->string('thumbnail')->nullable();
$table->longText('video_code')->nullable();
$table->boolean('is_banner_image')->default(false);
$table->boolean('is_thumb_image')->default(false);
$table->unsignedInteger('sort_order');
$table->enum('status',['Active','Inactive']);
$table->timestamps();
$table->foreign('gallery_id')->references('id')->on('galleries');
});
->onDelete('cascade');
where you have defined your foreign key – programmingArrow