Риск быть избитым по голове и плечам за предложение non-CakePHP , позвольте мне представить следующее.
Создайте уникальный индекс в вашей базе данных для любого количества столбцов.
Стандартный синтаксис SQL для этого:
create unique index {IndexName} on {Table} ({Column}, {Column}, ...)
Поместите команду «$ this-> Model-> save ()» в блок «try / catch». В блоке «catch» проверьте исключение для кода ошибки. В MySQL единственным нарушением ключа является код ошибки 23000, но вы должны быть готовы и к другим возможным ошибкам.
Это быстро и просто и не требует подсчета скобок в массиве.
Вы должны всегда все равно помещать код доступа к базе данных в блок try / catch. Часть вашей обработки исключений должна включать регистрацию любых неожиданных сообщений об ошибках. Вы не можете ожидать, что CakePHP сделает для вас все .