1

Тема: Использование Abstract Entity

Привет все.
Хотелось бы не генерировать каждый раз по несколько классов с копипастом в каждом бандле именно по этому я создал DbBundle с некоторым количеством Entity и репозиториев в нем.

Если же базовой реализации не достаточно я бы хотел написать у себя в коде что-то типа такого:
namespace MyBudle/Entity/AdminEntity
use DbBundle/Entity/UserEntity as BaseEntity

class AdminEntity extends BaseEntity {
 
           // некая функция которая что-то делает, вставляет клон но с некими изменениями,
          // апдейтит какие-то счетчики - что угодно
          public function getIsAdmin() {
                   return 'test';
          }
 
          public function createClone() {}
 
          public function calculateЧего-то там и тд
          ............
}

Ну и в контроллере все как обычно но из репозитория я могу вызвать этот дополнительный метод.
Аналогично с репозиториями.

Но когда я создаю этот класс я вижу ошибку:
An exception occurred while executing
   

'SELECT поля FROM EnrichProduct t1 WHERE t0.id = ?' WITH params ["1128"]
SQLSTATE[42S02]: Base TABLE OR VIEW NOT found: 1146 TABLE 'db.enrichproduct' doesn't exist

Читал вот это http://doctrine-orm.readthedocs.org/pro … pping.html
Получил это:

SQLSTATE[42S22]: COLUMN NOT found: 1054 Unknown COLUMN 't0.discr' IN 'field list'

default/smile

У меня нет никаких discriminatorColumn и чего-то там еще. Я просто хочу просто Заекстендить класс Entity где мне нужно и дописать некий функционал в  Entity и Репозиторий который относится только к этому бандлу и все!

Или я вообще выбрал не правильный подход и таким образом нельзя работать с Entity и нужно придумать что-то другое ? Спасибо!

Картинки с кодом:
Конфиги:
http://hostingkartinok.com/show-image.p … 433be153b9
http://hostingkartinok.com/show-image.p … 81a05f3c53

Классы:
http://hostingkartinok.com/show-image.p … e4ba99610c
http://hostingkartinok.com/show-image.p … 01fd0f4fb8

2

Re: Использование Abstract Entity

esigns пишет:

У меня нет никаких discriminatorColumn и чего-то там еще.

В конфиге базовой сущности у вас есть discriminatorColumn. Вы пытаетесь использовать STI (single table inheritance) для какой-то своей задачи, игнорируя ее логику, для которой она вообще создавалась — иметь несколько разных типов сущностей в одной таблице БД. Именно поэтому в ней обязателен параметр discriminatorColumn, по которому собственно определяется тип сущности, которому соответствует запись в БД.

Я не шибко понял, зачем вообще вам нужны базовые сущности. Но если действительно нужны, то единственный рабочий вариант с Доктриной — использовать mapped superclass. Тот еще геморрой, но другие варианты не предназначены для вашей задачи.

3

Re: Использование Abstract Entity

Благодарю.
Почитаю о нем.