Зависимости CodeIgniter между моделями без использования каких-либо систем ORM или DataMapper - PullRequest
1 голос
/ 30 января 2012

Я пишу систему CRUD с использованием CodeIgniter, реализуя некоторые зависимости «один ко многим» между моделями (без использования систем ORM или DataMapper), вызывая методы из одной модели в другую.

Например:в случае "много документов за пользователя " при удалении пользователя User_Model напрямую вызывает delete () метод в Document_Model , удаление любых связанных с ним документов.

Я уверен, что есть лучший способ реализации выпуска модели «один ко многим» (без ORM и т. Д.).), и был бы признателен за некоторые рекомендации.

Спасибо

Алон.

1 Ответ

0 голосов
/ 01 февраля 2012

Конечно! Вам разрешено использовать движок InnoDB. Этот механизм имеет функциональные внешние ключи, так что вы можете сделать что-то вроде этого, например (очень просто)

CREATE TABLE IF NOT EXISTS `documents` (
  `did` bigint(11) NOT NULL AUTO_INCREMENT,
  `uid` bigint(11) NOT NULL,
  `data` varchar(255) NOT NULL,
  PRIMARY KEY (`did`),
  KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `user` (
  `uid` bigint(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `password` varchar(25) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `documents`
ADD CONSTRAINT `documents_cstr_1` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE NO ACTION ON UPDATE CASCADE;
...