Note that there are some explanatory texts on larger screens.

plurals
  1. POSymfony 2 Primary key is one to one relation with parent table
    primarykey
    data
    text
    <p>I have two entities: User and UserProfile. At user entity primary key is autoincrement and named intUserID. UserProfile entity have the same primary key (but not autoincrement) and associated with User entity. When i'm trying to insert all user data to this entities, doctrine throws an exception: <strong>Entity of type Project\UsersBundle\Entity\UserProfile is missing an assigned ID for field 'intuserid'</strong></p> <p>YML mapping for UserEntity:</p> <pre><code>Project\UsersBundle\Entity\User: type: entity table: user fields: intuserid: id: true type: integer unsigned: true nullable: false column: intUserID generator: strategy: IDENTITY varname: type: string length: 150 fixed: false nullable: false column: varName varemail: type: string length: 150 fixed: false nullable: false column: varEmail varpassword: type: string length: 40 fixed: false nullable: false column: varPassword oneToOne: profile: targetEntity: Project\UsersBundle\Entity\UserProfile cascade: ["all"] joinColumn: name: intuserid referencedColumnName: intUserID lifecycleCallbacks: { } </code></pre> <p>YML form UserProfile:</p> <pre><code>Project\UsersBundle\Entity\UserProfile: type: entity table: user_profile fields: intuserid: id: true type: integer unsigned: true nullable: false column: intUserID varsurname: type: string length: 50 fixed: false nullable: true column: varSurname varpatronymic: type: string length: 50 fixed: false nullable: true column: varPatronymic oneToOne: user: targetEntity: Project\UsersBundle\Entity\User inversedBy: profile joinColumn: name: intuserid referencedColumnName: intUserID lifecycleCallbacks: { } </code></pre> <p>CreateAction:</p> <pre><code>public function createAction(Request $request) { $user = new User(); $form = $this-&gt;createCreateForm($user); $form-&gt;handleRequest($request); if ($form-&gt;isValid()) { $user-&gt;setVarSalt(md5(microtime().$user-&gt;getVarEmail())); if ($user-&gt;getVarPassword()) { $encoder = $this-&gt;container-&gt;get('security.encoder_factory')-&gt;getEncoder($user); $password = $encoder-&gt;encodePassword($user-&gt;getPassword(), $user-&gt;getSalt()); $user-&gt;setVarPassword($password); } $em = $this-&gt;getDoctrine()-&gt;getManager(); $em-&gt;persist($user); $em-&gt;flush(); $this-&gt;get('session')-&gt;getFlashBag()-&gt;add('success', 'Successfully saved'); return $this-&gt;redirect($this-&gt;generateUrl('users_edit', array('id' =&gt; $user-&gt;getIntUserID()))); } return $this-&gt;render('ProjectUsersBundle:Default:edit.html.twig', array( 'entity' =&gt; $user, 'form' =&gt; $form-&gt;createView(), )); } </code></pre> <p>Form User</p> <pre><code>public function buildForm(FormBuilderInterface $builder, array $options) { $builder -&gt;add('varname', 'text', array('label' =&gt; 'Название', 'required' =&gt; true)) -&gt;add('varemail', 'text', array('label' =&gt; 'E-mail', 'required' =&gt; true)) -&gt;add('varpassword', 'password', array('label' =&gt; 'Пароль')) -&gt;add('isactive', 'checkbox', array('label' =&gt; 'Активен')) -&gt;add('ispublic', 'checkbox', array('label' =&gt; 'Публичный профиль')) -&gt;add('profile', new UsersProfileType()) -&gt;add('save', 'submit', array('label' =&gt; 'Сохранить')); } </code></pre> <p>Form UserProfile</p> <pre><code>public function buildForm(FormBuilderInterface $builder, array $options) { $builder -&gt;add('varsurname', 'text', array('label' =&gt; 'Фамилия')) -&gt;add('varpatronymic', 'text', array('label' =&gt; 'Отчество')) -&gt;add('save', 'submit', array('label' =&gt; 'Сохранить')); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload