Прежде всего, я использую собственный загрузчик для своих классов сущностей
Код: Выделить всё
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 . '.');
}
}
}
например, $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
Код: Выделить всё
class Work extends Profiles
{
}
Однако я пытался добавить идентификатор столбца для класса 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
Мобильная версия