Нужен ли RedBean первичный ключ «id»?

Если вы используете RedBean ORM, вам нужно добавить первичный ключ с именем «id» в каждую таблицу в вашей базе данных?

В моем db у меня есть несколько таблиц с парами первичных ключей из 2 или 3 полей или первичных ключей с другими именами, кроме «id» (да, я мог бы изменить имя на «id», но на самом деле это не отразилось бы на реальность, потому что они не являются идентификаторами)

Пример:

table1 – магазины сообщений:

id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, title TEXT, content TEXT, 

table2 – хранит мета для сообщений:

  post INTEGER DEFAULT 0, # <- references "id" from "posts" name TEXT, value TEXT, PRIMARY KEY(name, post), CONSTRAINT posts_meta FOREIGN KEY(post) REFERENCES posts(id) ON DELETE CASCADE ON UPDATE RESTRICT 

Будет ли RedBean работать с такой структурой db?

К сожалению, с вашей текущей структурой таблицы вы не можете использовать RedBean. Каждая таблица должна иметь первичный ключ с автоматическим приращением. Небольшое падение, поскольку это затрудняет интеграцию в уже существующий продукт.

Несколько потоков, которые не использовали RedBean из-за этого ограничения, с ответами автора, Gabor De Mooij:

http://groups.google.com/group/redbeanorm/browse_thread/thread/6d5582275326744f?pli=1

http://groups.google.com/group/redbeanorm/browse_thread/thread/4fa7b29b453dcdb8

Однако RedBean НЕ требует, чтобы поле первичного ключа называлось просто «id». Вы можете отформатировать имя столбца первичного ключа по своему вкусу с помощью formatBeanID() , как показано в приведенном ниже примере, который formatBeanID() имя таблицы к «id». например), users таблицы будут иметь первичный ключ users_id . Используя это форматирование, вы можете получить подробное описание с указанием имени идентификатора.

http://redbeanphp.com/community/wiki/index.php/Prefixes

Надеемся, что эта сдержанность будет снята в будущем, поскольку она действительно препятствует интеграции в существующие продукты.

EDIT: Как альтернативный ORM, я хорошо слышал Доктрину: http://www.doctrine-project.org/ . Я лично его не использовал, но, похоже, это стандарт для многих, работающих с PHP.

EDIT 2: Спасибо и кредит Джейсону за привлечение внимания нового метода интеграции RedBean в существующий проект, в котором ваша база данных не может быть настроена для него. Я хотел также обновить свой ответ, если люди все еще ссылаются на эту проблему. Габор предложил сделать представления, которые сопоставляются с таблицами, где вы можете настроить представление, чтобы иметь необходимую структуру для RedBean. Я лично не тестировал это, но он получил положительные отзывы от некоторых пользователей. Он добавляет некоторые дополнительные накладные расходы и обслуживание при изменении таблиц, но, по-видимому, является лучшим и наиболее полным ответом на эту проблему на сегодняшний день. http://www.redbeanphp.com/faq#beanformatter

Принятый ответ не является строго истинным … Вы можете использовать существующую структуру таблицы, но вам нужно будет реализовать VIEW поверх каждой из таблиц, которые позволят вам переименовать столбец PKEY в «id» … См. это письмо от Gabor – создателя RedBeanPHP:

https://groups.google.com/forum/#!searchin/redbeanorm/view/redbeanorm/wXUeT4Tj2uU/3AngnmVwZdYJ