LaravelDaily / Laravel-API-Course-Demo

30 stars 23 forks source link

Getting Error: Integrity constraint violation When delete Category #2

Open thanjeys opened 1 year ago

thanjeys commented 1 year ago

{ "message": "SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (laravel_api.products, CONSTRAINT products_category_id_foreign FOREIGN KEY (category_id) REFERENCES categories (id)) (SQL: delete from categories where id = 1)", "exception": "Illuminate\Database\QueryException", "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php", "line": 760, "trace": [ { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php", "line": 720, "function": "runQueryCallback", "class": "Illuminate\Database\Connection", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php", "line": 577, "function": "run", "class": "Illuminate\Database\Connection", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php", "line": 522, "function": "affectingStatement", "class": "Illuminate\Database\Connection", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php", "line": 3456, "function": "delete", "class": "Illuminate\Database\Connection", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php", "line": 1181, "function": "delete", "class": "Illuminate\Database\Query\Builder", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php", "line": 1453, "function": "delete", "class": "Illuminate\Database\Eloquent\Builder", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php", "line": 1396, "function": "performDeleteOnModel", "class": "Illuminate\Database\Eloquent\Model", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\app\Http\Controllers\Api\CategoryController.php", "line": 42, "function": "delete", "class": "Illuminate\Database\Eloquent\Model", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Controller.php", "line": 54, "function": "delete", "class": "App\Http\Controllers\Api\CategoryController", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php", "line": 43, "function": "callAction", "class": "Illuminate\Routing\Controller", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Route.php", "line": 260, "function": "dispatch", "class": "Illuminate\Routing\ControllerDispatcher", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Route.php", "line": 205, "function": "runController", "class": "Illuminate\Routing\Route", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 725, "function": "run", "class": "Illuminate\Routing\Route", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 141, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php", "line": 50, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Routing\Middleware\SubstituteBindings", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php", "line": 126, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php", "line": 102, "function": "handleRequest", "class": "Illuminate\Routing\Middleware\ThrottleRequests", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php", "line": 54, "function": "handleRequestUsingNamedLimiter", "class": "Illuminate\Routing\Middleware\ThrottleRequests", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Routing\Middleware\ThrottleRequests", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 116, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 726, "function": "then", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 703, "function": "runRouteWithinStack", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 667, "function": "runRoute", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 656, "function": "dispatchToRoute", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php", "line": 190, "function": "dispatch", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 141, "function": "Illuminate\Foundation\Http\{closure}", "class": "Illuminate\Foundation\Http\Kernel", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php", "line": 21, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull.php", "line": 31, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\TransformsRequest", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php", "line": 21, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TrimStrings.php", "line": 40, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\TransformsRequest", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\TrimStrings", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php", "line": 27, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\ValidatePostSize", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance.php", "line": 86, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Http\Middleware\HandleCors.php", "line": 62, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Http\Middleware\HandleCors", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Http\Middleware\TrustProxies.php", "line": 39, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 180, "function": "handle", "class": "Illuminate\Http\Middleware\TrustProxies", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 116, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php", "line": 165, "function": "then", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php", "line": 134, "function": "sendRequestThroughRouter", "class": "Illuminate\Foundation\Http\Kernel", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\public\index.php", "line": 52, "function": "handle", "class": "Illuminate\Foundation\Http\Kernel", "type": "->" }, { "file": "D:\Laravel_Apps\LaravelAPI\vendor\laravel\framework\src\Illuminate\Foundation\resources\server.php", "line": 16, "function": "require_once" } ] }

PovilasKorop commented 1 year ago

@thanjeys thanks for the reporting, but I'm not planning to update this demo repository.

That error can be fixed by adding a cascadeOnDelete() in migrations of products table

thanjeys commented 1 year ago

Okay Thanks for your reply.