Продолжаю изучать Yii по этой книге. Удивило то, что надо "ручками" создавать таблицы БД, а затем автоматом генерировать ORM-модели (например в Django все наоборот, в models пишешь модели, а потом запускаешь syncdb и таблицы генерируются сами). Для создания таблиц скачала phpmyadmin, его можно очень просто поставить (распаковать в папку откуда запускаются веб-приложения, переименовать, переименовать пример файла настроек config.sample.inc.php просто в config.inc.php). Таблицы в нем тоже очень просто создаются, а вот с настройкой связей между ними сложнее. В книге , например, приводится вот такой код для настройки связей между двумя таблицами:
ALTER TABLE 'tbl_issue' ADD CONSTRAINT 'FK_issue_project' FOREIGN KEY
('project_id') REFERENCES 'tbl_project' ('id') ON DELETE CASCADE ON
UPDATE RESTRICT;
такой запрос никак не хотел выполняться из-за ошибок в синтаксисе. В итоге выполнился вот такой запрос (спасибо stackoverflow):
ALTER TABLE `tbl_issue`
ADD CONSTRAINT `FK_issue_project` FOREIGN KEY (`project_id`) REFERENCES `tbl_project` (`id`);
Ну а запрос INSERT INTO ... принял такой вид:
INSERT INTO `tbl_user`
(`email`, `username`, `password`)
VALUES
('test1@notanaddress.com','Test_User_One', MD5('test1')),
('test2@notanaddress.com','Test_User_Two', MD5('test2'));
Для набора этих кривых кавычек, оказывается, есть отдельная кнопка на клавиатуре :)
ALTER TABLE 'tbl_issue' ADD CONSTRAINT 'FK_issue_project' FOREIGN KEY
('project_id') REFERENCES 'tbl_project' ('id') ON DELETE CASCADE ON
UPDATE RESTRICT;
такой запрос никак не хотел выполняться из-за ошибок в синтаксисе. В итоге выполнился вот такой запрос (спасибо stackoverflow):
ALTER TABLE `tbl_issue`
ADD CONSTRAINT `FK_issue_project` FOREIGN KEY (`project_id`) REFERENCES `tbl_project` (`id`);
Ну а запрос INSERT INTO ... принял такой вид:
INSERT INTO `tbl_user`
(`email`, `username`, `password`)
VALUES
('test1@notanaddress.com','Test_User_One', MD5('test1')),
('test2@notanaddress.com','Test_User_Two', MD5('test2'));
Для набора этих кривых кавычек, оказывается, есть отдельная кнопка на клавиатуре :)
Наверное, подход "сначала SQL, потом модели" оправдан тем, что SQL -- весьма древняя технология, в отличие от ORM, поэтому многим легче сначала набросать таблички, а потом только классы работы с ними.
ОтветитьУдалить