четверг, 8 августа 2013 г.

Фреймворк Yii: продолжение

Продолжаю изучать 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'));

Для набора этих кривых кавычек, оказывается, есть отдельная кнопка на клавиатуре :)

1 комментарий:

  1. Наверное, подход "сначала SQL, потом модели" оправдан тем, что SQL -- весьма древняя технология, в отличие от ORM, поэтому многим легче сначала набросать таблички, а потом только классы работы с ними.

    ОтветитьУдалить