#php #symfony #mapping
#php #symfony #отображение
Вопрос:
Пытаюсь сохранить объект, но поле profiel_id с отображающим отношением не сохраняется. Остальная часть объекта достаточно странная.
$fotos = new Fotos();
$fotos->setProfielId($this->profielId);
$fotos->setNaam($file->name);
$fotos->setAanmaakDatum(time());
$fotos->setWijzigingDatum(time());
$fotos->setProfielfoto(0);
// Save the object
$this->em->persist($fotos);
$this->em->flush();
fotos.xml
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine- mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="KlikCoreBundleEntityFotos" table="fotos">
<indexes>
<index name="profiel_id" columns="profiel_id"/>
</indexes>
<id name="id" type="integer" column="id">
<generator strategy="IDENTITY"/>
</id>
<field name="profielId" type="integer" column="profiel_id" length="11" nullable="true"/>
<field name="naam" type="string" column="naam" length="255" nullable="true"/>
<field name="profielfoto" type="boolean" column="profielfoto" nullable="true"/>
<field name="aanmaakDatum" type="integer" column="aanmaak_datum" nullable="true"/>
<field name="wijzigingDatum" type="integer" column="wijziging_datum" nullable="true"/>
<field name="wijzigingGebruikerId" type="integer" column="wijziging_gebruiker_id" nullable="true"/>
<!-- many-to-one field="profiel" target-entity="KlikCoreBundleEntityProfiel" / -->
<many-to-one field="profiel" target-entity="KlikCoreBundleEntityProfiel" inversed-by="fotos" >
<join-column name="profiel_id" referenced-column-name="id" />
</many-to-one>
</entity>
</doctrine-mapping>
Когда я удаляю объявление «многие к одному», все в порядке, profiel_id сохраняется, но другие вещи ломаются в других местах, которые мне не нужны.
Вот часть моего profiel.xml
<one-to-many field="fotos" target-entity="KlikCoreBundleEntityFotos" mapped-by="profiel" />
Комментарии:
1. Вы должны добавить профиль к фотографии, а не устанавливать идентификатор.. Т.е.
$fotos->setProfile($this->profile)
, обратите внимание, что это должно содержать фактический объект profile, а не просто идентификатор.2. Вот и все, большое спасибо! Хотел бы пометить это как принятое или что-то в этом роде, но, к сожалению, у меня недостаточно разрешений.
3. @Bart, в
ManyToOne
соединении вам нужно передать объект в функции установки вместо идентификатора.