Я сталкиваюсь с этой проблемой с учением, и никто в моем окружении не может помочь мне в этом. Так что я надеялся, что кто-то здесь знает:Учет доктрины и наследование классов классов
Im работает со следующей структурой:
Entity: MLT
/**
* @Entity
*/
class MLT
{
/**
* @OneToMany(targetEntity="\WAD\Common\LT", cascade={"remove"}, mappedBy="term")
*/
private $languageTerms;
}
Entity: LT
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"lttext" = "LTText", "ltstring" = "LTString"})
*/
abstract class LT {
/**
* @Id @Column(type="integer")
* @GeneratedValue
*/
private $id;
...
}
Тогда я имеют два одинаковых объекта: LTString и LTText:
Entity: LTText
/**
* @Entity
*/
class LTText extends LT {
/**
* @Column(type="text")
*/
private $value;
}
Entity: LTString
/**
* @Entity
*/
class LTText extends LT {
/**
* @Column(type="string")
*/
private $value;
}
Теперь моя проблема:
Я создаю следующий присоединиться:
$qb = $em->createQueryBuilder();
$qb->select('naam')
->from('\TBIT\Entities\Naam', 'naam') //this is the MLT
->leftjoin('naam.languageTerms','lts') //these are the LT's
->orwhere($qb->expr()->like('lts.value',"'%".$word."%'"));
Теперь, когда последняя строка вызывает у меня проблемы. Он дает ошибку, что lts не имеет поля значений. Это своего рода истина, так как это имеет подкласс. Но как я могу сделать запрос авто включать подкласс?
Да, я пробовал это, но затем он удаляет две таблицы подклассов из базы данных. И определение только защищенного значения $ (без @column над ним) не работает. – Thijs
Меня интересует этот сценарий. Я попытаюсь воспроизвести его – manix