symfony2 сохраняется с ManyToOne

#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 соединении вам нужно передать объект в функции установки вместо идентификатора.