Symfony 1.4 Doctrine Модуль базы данных MySQL для таблиц представлений - PullRequest
1 голос
/ 18 мая 2011

С помощью symfony 1.4 и doctrine вы можете создавать страницы / модули внешнего интерфейса с помощью этой команды в каталоге вашего проекта: php symfony doctrine: generate-module --with-show --non-verbose-templates имя_файла tablename имя_класса

Это прекрасно работает с реальными таблицами, однако, когда я пытаюсь выполнить эту команду поверх представления БД MySQL вместо таблицы БД MySQL, я получаю эту ошибку: Невозможно сгенерировать модуль для модели без первичного key. Мое понимание заключается в том, что представление наследует первичный ключ из таблицы, из которой оно считывает.

Кто-нибудь знает обходной путь для этого, который все еще довольно легко поддерживать с помощью Symfony? Было бы удивительно, если бы я мог использовать DB Views с фреймворком Symfony. Дайте мне знать, если вам нужно больше деталей. В целом ни одна точка зрения не работает, какой бы сложной или простой она ни была.

P.S. Я попытался отредактировать файл ./config/doctrine/schema.yml, чтобы изменить столбец id в представлении на первичный ключ, который находится в фактической таблице, и я все еще получаю ту же ошибку при попытке создать модуль внешнего интерфейса в symfony. ,

tableName: v_tablename
 columns:
  id:
  type: integer(4)
  fixed: false
  unsigned: false
  primary: true --> This used to be primary: false
  default: '0'
  notnull: true
  autoincrement: false

* K Я понял это, но я не могу опубликовать свой ответ до 8 часов, так как я новый пользователь. Я был на 1/2 пути, когда я редактировал файл schema.yml. Если вы пытаетесь сгенерировать модуль из представления, и вы создали свою модель БД вне Symfony, скажем, с помощью MySQL Workbench, с доктриной вы должны построить свою схему, а затем построить свою модель в Symfony из существующей структуры базы данных, например:

1 - доктрина php symfony: build-schema (при этом создается файл schema.yml и т. Д.) Однако, если у вас есть представления в вашей схеме базы данных, первичные ключи не генерируются в схеме Файл .yml. Отредактируйте его вручную и измените основной: ложный на основной: истинный соответственно там, где они вам нужны.

2 - доктрина php Symfony: build-model После выполнения шага 2 после добавления первичных ключей вы можете успешно сгенерировать свой модуль

3 - доктрина php Symfony: модель модуля внешнего интерфейса генерирующего модуля

1 Ответ

1 голос
/ 19 мая 2011

Незначительная коррекция ... это будет работать, однако я пропустил шаг между 2 и 3, который влияет на страницы форм, и разбил шаг 1.

1 - Учение php Symfony: build-схема (создается файл schema.yml и т. д.)

2 - Редактировать файл ./config/doctrine/schema.yml.Для определений вашего представления измените первичное: ложное на первичное: истинное соответственно там, где они вам нужны.Я также заметил, что в MySQL начиная с boolean = tinyint (1), schema.yml обнаруживает целое число (1), а не логическое значение.Вы также можете изменить ваши целочисленные (1) типы данных на логические, где вам тоже нужно.

tableName: v_tablename
   columns:
     id:
     type: integer(4)
     fixed: false
     unsigned: false
     primary: false --> change to, primary: true
     default: '0'
     notnull: true
     autoincrement: false

tableName: tablename
   columns:

     active:
     type: integer(1) --> change to, type: boolean
     fixed: false
     unsigned: false
     primary: false
     default: '0'
     notnull: true
     autoincrement: false

3 - php Symfony Doctrine: build-model

4 - Учение php Symfony: build-формы

5 - Учение php Symfony: модуль внешнего интерфейса generate-module

...