@Apostol63

Почему не работает delete в laravel?

Всем привет. По сути проблема уже решена, но мне не дает покоя тот факт, что я мог её решить неправильно. Да и вообще сам тот факт, что я не понимаю как и что работает (до конца)

Суть вот в чем
У меня есть axios запрос к контроллеру:
axios.post('/deletefolderntd', {id: this.fornewfolder[0].id}).then(response => {
				console.log(response.data);
			});

Роут у меня следующий:
Route::post('/deletefolderntd', 'filemanagController@deleteFolder');

Контроллер был таким (когда не срабатывало):
public function deleteFolder(Request $request) {
		$id = $request->id;
	        $model = new Filemanager();
		$result = $model->deleteFolderById($id);
	}

Модель Filemanager и собсн метод deleteFolderById:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Filemanager extends Model {
	protected $table = 'folders';
	protected $connection = 'sqlite';
     	public function deleteFolderById($id) {
		return $this->where('id', $id)->delete();
	}
}

Так вот. При таком раскладе у меня ответ был 0 и ничего не удалялось
Если же я роут менял с post на get, то все работало и удалялось. (В контроллере убирал Request)
Но мне нужно, чтобы удаление было через axios.post и сработал только такой вариант контроллера
public function deleteFolder(Request $request) {
		$id = $request->id;
		$model = Filemanager::find($id);
		$result = $model->delete();
}

Тут немного, но не сильно (как по мне) отличается запрос.
Правильно ли я все сделал? И почему не работало через where, но сработало с find?

P.S.
Заранее спасибо. Пытаюсь разобраться)
  • Вопрос задан
  • 796 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ettychel
Можно иначе
public function destroy(Request $r) {
    return Filemanager::destroy($r->id);
}

Но в целом будет работать и то и то.
По поводу POST как сказали выше CSRF токен очень даже мог быть причиной. Посмотрите, что возвращает сервер и логи, там явно будет описано CSRF виноват или нет.

В дополнение по поводу метода запроса. Для удаления используйте запрос DELETE, ваши роуты будут явно отражать что они делают, потом будет удобно смотреть
php artisan route:list
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы