Laravel 5 - попробуй ловить исключение не работает
Я новичок в laravel5, и этот код не может перехватить все исключения. Я не знаю, что случилось, пожалуйста, помогите.
public function delete($id)
{
$sql = $this->deleteSql();
DB::beginTransaction();
try {
$deleteData = Db::delete($sql, ['id' => $id]);
if (!$deleteData) {
return false;
}
return true;
} catch (\Exception $e) {
DB::rollback();
return $e->getMessage();
}
DB::commit();
}
Это даст мне:
Осветить \Database\QueryException: SQLSTATE[22P02]: и вызвано PDOException: SQLSTATE[22P02]:
1 ответ
Ваш метод не собирается catch
блокировать вообще, так как он возвращается bool
от try
блок.
Также я не знаю, что заставило вас использовать try...catch
блок.
У меня еще ошибка:
Db::delete($sql, ['id' => $id]);
Если вы определили Db
тогда это нормально. Но если нет, то это выдаст ошибку.
Также нет необходимости использовать транзакции, если только вы не тестируете свое приложение с помощью какого-либо инструмента PHP Testing, например phpUnit / phpSpec и т. Д.
Решение:
Там нет необходимости использовать try..catch
блокировать вообще.
Просто вызовите метод удаления для модели, которую вы хотите удалить, и все готово, вот так:
public function delete($id)
{
YourModel::delete($id); // Replace YourModel with the model you wish to delete
\Session::flash('delete_message', 'Model has been successfully deleted.');
return redirect()->back(); // or anywhere else of your choice
}
Надеюсь, что это помогает вам. Удачного кодирования. Приветствия.