К сожалению, CakePHP не поддерживает составные ключи или частичные первичные ключи. В соответствии с рекомендацией CakePHP , вы можете использовать прямые запросы, такие как:
CREATE TABLE posts_tags (
id INT(10) NOT NULL AUTO_INCREMENT,
post_id INT(10) NOT NULL,
tag_id INT(10) NOT NULL,
PRIMARY KEY(id));
... Или вы можете создать суррогатный ключ, возможно, значение автоинкремента. Вместо того, чтобы использовать автоинкрементный ключ в качестве первичного ключа, вы также можете использовать символ (36). Затем CakePHP будет использовать уникальный 36-символьный uuid (String :: uuid) всякий раз, когда вы сохраняете новую запись, используя метод Model :: save. (Из CakePHP Manual )