Мне нужно сопоставить один и тот же столбец с двумя таблицами различий (скажем, нормальными и расширенными).
/**
* @var ItemValue
*
* @OneToOne(targetEntity="ItemValue")
* @JoinColumn(name="id_value", referencedColumnName="id_value")
*/
private $value;
/**
* @var ItemValueExtended
*
* @OneToOne(targetEntity="ItemValueExtended")
* @JoinColumn(name="id_value", referencedColumnName="id_value")
*/
private $valueExtended;
/**
* @var string $isExtended
*
* @Column(name="is_extended", type="string", nullable=false)
*/
private $isExtended = 'YES';
У меня нет проблем с объединением данных на основе атрибута isExtended с использованием DQL:
"SELECT id,idv FROM ItemData id
JOIN id.value idv WHERE id.isExtended='NO'";
и
"SELECT id,idv FROM ItemData id
JOIN id.valueExtended idv WHERE id.isExtended='YES'";
но когда я хочу сохранить новый объект, NULL вставляется в столбец id_value? !!
$oValue = ItemValue();
.
.
$oData = new ItemData();
$oData->setValue($oValue);
.
.
.
$em->persist($oData);
$em->flush();
Любая идея?