Я занимаюсь разработкой приложения CakePHP и хотел бы использовать UUID в качестве первичных ключей, поскольку приложение будет распределено по нескольким базам данных, а также я хотел бы воспользоваться преимуществами интегрированной инфраструктуры ACL в CakePHP 2.1
.
Я иду согласно учебному пособию , и я изменил схему БД следующим образом
CREATE TABLE acos (
id uuid NOT NULL,
parent_id uuid DEFAULT NULL,
model VARCHAR(255) DEFAULT '',
foreign_key uuid DEFAULT NULL,
alias VARCHAR(255) DEFAULT '',
lft uuid DEFAULT NULL,
rght uuid DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE aros_acos (
id uuid NOT NULL,
aro_id uuid NOT NULL,
aco_id uuid NOT NULL,
_create CHAR(2) NOT NULL DEFAULT 0,
_read CHAR(2) NOT NULL DEFAULT 0,
_update CHAR(2) NOT NULL DEFAULT 0,
_delete CHAR(2) NOT NULL DEFAULT 0,
PRIMARY KEY(id)
);
CREATE TABLE aros (
id uuid NOT NULL,
parent_id uuid DEFAULT NULL,
model VARCHAR(255) DEFAULT '',
foreign_key uuid DEFAULT NULL,
alias VARCHAR(255) DEFAULT '',
lft uuid DEFAULT NULL,
rght uuid DEFAULT NULL,
PRIMARY KEY (id)
);
Однако теперь я получаю ошибку:
Ошибка: SQLSTATE[42883]: неопределенная функция: 7 ОШИБКА: функция max (uuid) не существует ЛИНИЯ 1: ВЫБРАТЬ МАКС ("Aro". "Rght") AS "rght" ОТ "public". "Aros" AS "... ^СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам понадобится добавить явное приведение типов.
Версия CakePHP - 2.1.0-бета, и я использую PostgreSQL с типом данных UUID.
Кто-нибудь успешно использовал платформу ACL CakePHP с UUID? Я хотел бы, чтобы это работало с минимальными изменениями в платформе CakePHP для будущей поддержки этого приложения.