0
У меня есть объекты: Tag
, User
и Service
. Tag
имеет отношения «многие ко многим» с User
и Service
.Doctrine Mysql: несколько соединений в построителе запросов
class Service{
/**
* @ORM\ManyToMany(targetEntity="Tag", mappedBy="serviceList")
*/
private $tagList;
}
class User{
/**
* @ORM\ManyToMany(targetEntity="Tag", mappedBy="userList")
*/
private $tagList;
}
class Tag{
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="tagList")
* @ORM\JoinTable(name="tags_users")
*/
private $userList;
/**
* @ORM\ManyToMany(targetEntity="Service", inversedBy="tagList")
* @ORM\JoinTable(name="tags_services")
*/
private $serviceList;
}
С построитель запросов, как я могу вернуть все услуги, которые имеют по крайней мере 1 общего тег с заданными User
, то есть услуг, связанных с пользователем
Это запрос, я написал, но это не работа
$query = $em->getRepository('AppBundle:Service')
->createQueryBuilder('service')
->join('service.tagList', 'serviceTag')
->join('AppBundle:BasicUser', 'user')
->join('user.tagList', 'userTag')
->where('user.id = :id')
->andWhere('serviceTag.id = userTag.id')
->setParameter('id', $user->getId())
;
Ошибка:
[Syntax Error] line 0, col 104: Error: Expected Literal, got "JOIN" (500 Internal Server Error)
хорошее решение, некоторое объяснение abot the innerJoin tag plz – ahmedbhs