I am trying to send a delete request via axios to laravel as follow:
axios.delete('api/users/' + this.checkedNames) .then((response) => { console.log(response) }, (error) => { // error callback }) Now from axios documentation I read that for delete request we should be using a configObject so the above could be rewritten as so:
axios.delete('api/users/', {params: {ids: this.checkedNames}) .then((response) => { console.log(response) }, (error) => { // error callback }) I have then Route::resource('users', 'UsersController'); in api.php so the default route for deleting is:
DELETE| api/users/{user}| users.destroy and the controller's method is:
|App\Http\Controllers\UsersController@destroy I am able to delete as expected a user when I pass a single id let's say api/users/12, it gets deleted correctly but when I try to pass the array above things get complicated.
if I try as per axios documentation axios.delete('api/users/', {params: {id: this.checkedNames}}) it looks I am sending this http://lorillacrud.dev/api/users?id[]=21&id[]=20 but I get a 405 method not allowed.
if I try axios.delete('api/users/' + this.checkedNames ) I get http://lorillacrud.dev/api/users/20,21 so in my destroy method I could grab the ids and delete, but I am wondering if this is the correct way to do it?
update
I seemed I made it work but I am not understanding so any help still appreciated to make a sense of what I am actually making work!
So, if change to:
axios.delete('api/users/destroy', {params: {'id': this.checkedNames}) and in my destroy method:
if ($request->id) { foreach ($request->id as $id) { User::destroy($id); } } User::destroy($id); } So...
// not deletes the user axios.delete('api/users/destroy', {params: {id: id}}) // ok deletes the users when using request->id in a for loop in the destroy laravel method. axios.delete('api/users/destroy', {params: {ids: this.checkedNames}}) // ok deletes one user axios.delete('api/users/' + id) sorry guys but I have a lot of confusion why and what !!!
The route name is user.destroy why does it work when I pass an array and it does not when I pass a single value, why viceversa the route with method delete will not delete when pass an array ???
Any difference between using api/users/destroy vs api/users only?
Thanks for any help on this!