0

I am currently trying to extend the SonataUserBundle's User to add a new ManyToMany relationship with a existing Entity.

I extended the User based on the answer found here - Extending Sonata User Bundle and adding new fields

User.php

/**
 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", inversedBy="pledgedUsers")
 **/
private $pledgedOn;

// (...) generated getters and setters here

Pledge.php

/**
 * @ORM\ManyToMany(targetEntity="Foo\UserBundle\Entity\User", inversedBy="pledgedOn")
 **/
private $pledgedUsers;

// (...) generated getters and setters here

The first thing I noticed when I sync the schema, is that it creates 2 pivot tables, instead of just one: pledge_user and user_pledge. I tried adding a @ORM\JoinTable in, but that's just changing the name of one. When I add the same @ORM\JoinTable to both, I get the 'table already exists' error.

When I try to access the user list in admin, I am getting a big sql error

An exception occurred while executing 'SELECT count(DISTINCT u0_.id) AS sclr0 FROM User u0_ LEFT JOIN fos_user_user_group f2_ ON u0_.id = f2_.user_id LEFT JOIN fos_user_group f1_ ON f1_.id = f2_.group_id':

SQLSTATE[42703]: Undefined column: 7 ERROR: column u0_.id does not exist

I am sure this is something simple, but I am smacking my head finding the source of this problem. What did I miss?

Full User.php: http://pastebin.com/TXunsgm1

Full Pledge.php: http://pastebin.com/Mta6aiVm

Community
  • 1
  • 1
patchrail
  • 2,007
  • 1
  • 23
  • 33

1 Answers1

0

I knew it was a derpy error. I had

 * @ORM\ManyToMany(targetEntity="Foo\UserBundle\Entity\User", inversedBy="pledgedOn")

and

 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", inversedBy="pledgedUsers")

One of them had to be mappedBy instead of inversedBy . Changing the second one to

 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", mappedBy="pledgedUsers")

fixed the problem.

patchrail
  • 2,007
  • 1
  • 23
  • 33