Details
Description
i have the following 2 yml
group
Userpro\Entity\Group:
type: entity
table: userpro_group
fields:
id:
id: true
type: integer
column: id
generator:
strategy: AUTO
name:
name: name
type: string
lenght: 100
permission:
name: permission
type: string
lenght: 100
lifecycleCallbacks: { }
user
Userpro\Entity\User:
type: entity
table: userpro_user
fields:
id:
id: true
type: integer
column: id
generator:
strategy: AUTO
name:
name: username
type: string
lenght: 100
manyToMany:
group:
targetEntity: Userpro\Entity\Group
cascade: { }
mappedBy: null
joinTable:
name: userpro_users_groups
joinColumns:
-
name: user_id
referencedColumnName: id
inverseJoinColumns:
-
name: group_id
referencedColumnName: id
orderBy: null
lifecycleCallbacks: { }
and i am using the following insert/dql
$group = new Userpro\Entity\Group; $group->setName('test'); $group->setPermission('test'); $em->persist($group); $em->flush(); $user = new Userpro\Entity\User; $user->setName('samuel'); $user->addGroup($em->find('Userpro\Entity\Group', 1)); $em->persist($user); $em->flush(); $dql = "SELECT u, g FROM Userpro\Entity\User u JOIN u.group g ORDER BY u.name ASC "; $result = $em->createQuery($dql); $users = $result->getResult(); echo '<pre>'; if($users) { foreach($users as $user) { echo $user->getName() . "\n"; foreach($user->getGroup() as $group) { echo "\t" . $group->getName() . "\n"; } echo "\n"; } }
when i run the insert/dql more then ones (so there are multiple entry's in de database) i get the error
Call to a member function add() on a non-object in ..Doctrine2/lib/Doctrine/ORM/PersistentCollection.php on line 163
got it fixed. seems on manytomany relations the join is not required in de dql. and will even result in a error
is it suppose to work like this?