Таблица с двумя столбцами первичного ключа в RedBeanPHP
Я использую следующую таблицу:
CREATE TABLE `page` (
`id` int(11) unsigned NOT NULL,
`revision` float unsigned NOT NULL DEFAULT '1',
`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`alias` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`text` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`parameters` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`,`revision`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Можно ли использовать первичный ключ с двумя столбцами в RedBeanPHP? Обычно вы бы использовали R::load('page', 1)
но так как я не только хочу id=?, но и ревизию =? это не будет работать.
Я уже прочитал документацию и некоторые вопросы о переполнении стека, но не смог найти ответа на этот вопрос.
Спасибо за вашу помощь!
1 ответ
Во -первых, нет, вы не можете сделать это так, как вы упомянули, потому что RedBean требует, чтобы в каждой таблице был столбец с именем id (lowerCase), представляющий собой автоинкремент и первичный ключ. Посмотрите на документацию схемы.
Далее, даже если это сработает, я бы не рекомендовал этого делать, потому что вы нарушаете принципы нормализации БД, добавляя ревизию в ту же таблицу. Большую часть времени вам просто нужна последняя ревизия, но хранение всех их в одной таблице просто увеличивает ваши запросы. Поэтому вместо этого я бы посоветовал попробовать решение, подобное описанному в моем модуле Redbean ReBean. Он использует отдельные таблицы для ревизий плюс автоматическое создание с помощью триггеров.