Doctrine обрабатывает это автоматически, если ваша схема настроена правильно. Я использую Doctrine только как часть Symfony, поэтому мой schema.yml
будет выглядеть примерно так. Возможно, вам придется изменить его, если ваша установка Doctrine использует другой метод для определения вашей схемы:
Users:
columns:
name:
type: string
relations:
Groups:
refClass: UserHasGroups
local: user_id
foreign: group_id
Groups:
columns:
name:
type: string
relations:
Users:
refClass: UserHasGroups
local: group_id
foreign: id
UserHasGroups
columns:
user_id:
type: integer
primary: true
group_id:
type: integer
primary: true
Doctrine будет использовать класс UserHasGroups
в качестве таблицы соединения многих ко многим. Затем, вызов $user->Groups
вернет вам все связанные Groups
объекты.
В качестве примечания я бы изменил названия вашей модели на форму единственного числа, например User
, Group
. $user = new Users()
на первый взгляд подразумевает, что вы создаете несколько пользователей за один раз, что, я полагаю, вы не: -)
Более подробную информацию см. В таблице соединений Doctrine .