Есть запись в таблице, которую пытаются удалить. На нее могут бы сслыки с других таблиц, соответственно в этом случае нужно выводить сообщение о невозможности удаления.
Как проверить, что запись нельзя удалить?
try {
$model->delete();
} catch (Exception $e) {
}
Такой код отлавливает это исключение из БД, скрипт валится с ошибкой.
Как отловить исключение или есть ли в Yii2 что-то типа метода canDelete() для проверки возможности удаления?
Не хочется руками проверять, есть ли ссылки на эту запись в других таблицах.
Я уже понял в чем проблема, я отлавливал Exception - а это оказался переопределенный \Exception.
Если ловить \Exception - то увидим, что постгрес руается при удалении, значит не удалили.
Вы вопрос читали?
Есть внешние ключи в нескольких таблица на таблицу из которой я пытаюсь удалить запись. Если вэтих таблицах есть записи ссылающиеся на запись которую я хочу удалить, то валится исключение из постгреса, котороя не отлавливается указаным мной кодом и скрипт валится с ошибкой.
Мне нужно либо как-то отловить это исключение, либо проверить, что данную запись удалить нельзя, т.к. на нее есть ссылки. Проверить это можно руками прошерстив все талицы на предмет ссылок на эту запись - это гемор.
McMike: О внешних ключах ничего не сказано в вопросе.
Если Вы имеете ввиду
На нее могут бы сслыки с других таблиц
, то это можно понять по разному, может просто суррогатный ключ... Надо явно писать, что настроены внешние ключи и обязательно показать, как они у Вас настроены.
При настройки этих ключей можно указать, что в связанной таблицы устанавливать значение в NULL и тогда при удалении не будет ошибки.
Надо дополнять вопрос дампом таблицы.
slo_nik: beforeDelete что?
Знаю я, что есть такая штука, в ней придется писать что-то самому.
Давай сведем к более короткому вопросу, как отловить эксепшн от постгреса?