вторник, 6 апреля 2010 г.

General error: 1451 Cannot delete or update a parent row: a foreign key constraint fails

Почему при удалении записи возникает SQL-ошибка?
General error: 1451 Cannot delete or update a parent row: a foreign key constraint fails ... 

Потому что при удалении в БД объекты все еще связаны. И поэтому их надо развязать на уровне приложения перед удалением. В методе delete модели нужно добавить отвязку:
  $this->unlink('Tickets',$this->Tickets->getPrimaryKeys(),true);

Это требуется только при наличии связи many-to-many. При других типах связей вполне справляется onDelete: CASCADE. Обратите внимание на третий аргумент (true). Он указывает на то, что unlink надо сделать немедленно, а не помечать связи как "подлежащие удалению".

Комментариев нет:

Отправить комментарий