Mam 2 tabele
users i users_email_addresses
i teraz chce na stronie mieć 2 inputy
- nazwa użytkownika
- email użytkownika
I teraz tak stworzyłem sobie Entity
class Users { /** * @var integer * * @ORM\Column(name="id_users", type="smallint", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=100, nullable=true) */ private $name; /** * * @var ArrayCollection * @ORM\OneToMany(targetEntity="UsersEmailAddresses", mappedBy="users") */ private $email;
i
class UsersEmailAddresses { /** * @var integer * * @ORM\Column(name="id_users_email_adresses", type="smallint", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="email", type="string", length=100, nullable=true) */ private $email; /** * @var type * * @ORM\ManyToOne(targetEntity="Users", inversedBy="email") * @ORM\JoinColumn(name="users_id", referencedColumnName="id_users") */ private $users;
I teraz w deklaracji formularza mam coś takiego
{ $builder ->add('name') 'type'=> new UsersEmailAddressesType(), )) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { 'data_class' => 'Test\UserBundle\Entity\Users', 'cascade_validation' => true )); }
Jako że przy dodawaniu nowego usera nie ma żadnego adresu email to pole input się nie wyświetla więc na hama dodałem (tak wiem że na stronie jest opcja dodawania pola przez JS)
$email = new \Test\UserBundle\Entity\UsersEmailAddresses; $formEmail = $this->createForm(new \Test\UserBundle\Form\UsersEmailAddressesType, $email); 'email_form' => $formEmail->createView(), 'entity' => $entity, 'form' => $form->createView(), );
I wszystko było by ok gdyby nie to że po wysłaniu formularza dostaje komunikat
Cytat
Catchable Fatal Error: Argument 1 passed to Test\UserBundle\Entity\Users::setEmail() must be an instance of Test\UserBundle\Entity\UsersEmailAddresses, array given..
No i teraz pytanie brzmi czy dobrze się do tego zabrałem

Chyba że to działa
insert (email)
id = insert (users)
update (email) set users_id = id
(a tak podejrzewam że to działa)
Ps Sorki za może głupie pytanie ale z ORM do tej pory miałem nie wiele wspólnego.