Zend Framework 1.11 + Doctrine 2 + Проблемы с отображением наследования классов (YAML) при генерации сущностейPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Zend Framework 1.11 + Doctrine 2 + Проблемы с отображением наследования классов (YAML) при генерации сущностей

Сообщение Anonymous »

Я получаю ряд проблем при попытке реализовать CTI

Прежде всего, я использую собственный загрузчик для своих классов сущностей

Код: Выделить всё

class My_AutoLoader implements Zend_Loader_Autoloader_Interface
{

public function autoload($class)
{
$class = trim(str_replace('\\', '/', $class), '/');
if (@include(APPLICATION_PATH . '/Entities/' . $class . '.php')) {
return $class;
} else {
throw new Zend_Loader_Exception('Cannot load ' . $class . '.');
}
}

}
Идея состоит в том, чтобы использовать application\Entities для классов, не имеющих пространства имен
например, $user = new Users();

Затем я определил наследование классов

Код: Выделить всё

Profiles:
type: entity
table: profiles
repositoryClass: Repositories\Base
inheritanceType: JOINED
discriminatorColumn:
name: profiletype
type: integer
length: 11
discriminatorMap:
1: Personal
2: Work
3: Business
id:
id:
type: integer
generator:
strategy: AUTO
fields:
firstname:
type: string
length: 255
fixed: false
nullable: true
...

Work:
type: entity
table: work
repositoryClass: Repositories\Base
fields:
position:
type: string
length: 255
fixed: false
nullable: true
затем я вручную создал класс Work для расширения профилей

Код: Выделить всё

class Work extends Profiles
{
}
Первая проблема началась с версии 2.0.0 (2.0.1), когда я использую generate-entities консольного инструмента, я получаю ошибку, < strong>У меня нет идентификатора класса Work, это странно, потому что, ИМХО, это противоречит идее, что Work расширяет Profiles, а id уже определено.

Однако я пытался добавить идентификатор столбца для класса Work, но затем я получаю сообщение о том, что уже есть идентификатор столбца. ДА!

Я пытался добавить другое имя столбца для PK, но на самом деле получил лишний столбец, который не нужен, потому что правильный унаследованный идентификатор столбца также создается. В CTI у меня должен быть один столбец FK, и нет других PK с автоматически сгенерированными значениями.

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

Позже я обнаружил, что все это странное поведение связано с ошибкой в ​​доктрине 2 и этом исправлено в версии 2.0.5.

Ну, я попробовал версию 2.0.5, и у меня возникла точно такая же проблема, поэтому я подумал, что ошибка в моем коде.

Я сообщил об ошибке в jira доктрины, и мне ответили, что мои определения неверны, и мне нужны идентификаторы для подклассов (и меня направили к документации, которую все мы Знание довольно плохое, особенно для сопоставления YAML). Я сдался и продолжил свой хак.

Позже я попробовал использовать версии 2.0.6 и 2.1, но с этими версиями мои объекты больше не обновляются, но каждый раз, когда я используйтеgenerate-entities, определения новых классов добавляются в конец, поэтому возникают дубликаты.

Мой вопрос:

Это проблема с доктриной или я делаю это неправильно?

Если мне интересно, как правильно отображать CI

Подробнее здесь: https://stackoverflow.com/questions/649 ... oblems-wit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»