Таблица с двумя столбцами первичного ключа в 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. Он использует отдельные таблицы для ревизий плюс автоматическое создание с помощью триггеров.

Другие вопросы по тегам