Похоже, у вас есть много-много взаимосвязей между поездками и тегами. Лучше придерживаться доктрины, определять свои энты и соотносить их столько же со многими, как
class Trip
{
// ...
/**
* @ManyToMany(targetEntity="Tag", inversedBy="trips")
* @JoinTable(name="trip_tag")
*/
private $tags;
public function __construct() {
$this->tag s= new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
/** @Entity */
class Tag
{
// ...
/**
* @ManyToMany(targetEntity="Trip", mappedBy="tags")
*/
private $trips;
public function __construct() {
$this->trips = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
А потом строить свой DQLс некоторой агрегацией
$tagIds = [1,2];
$qb = $this->createQueryBuilder('trip');
$qb ->addSelect('COUNT(tags.id) AS total_tags')
->leftJoin('trip.tags', 'tags')
->add('where', $qb->expr()->in('tags', $tagIds))
->groupBy('trip.id')
->having('total_tags = @numberOfTags')
->getQuery()
->getResult();
многие-ко-многим, двунаправленные
Doctrine2 получить объект без отношений
Symfony2 - Doctrine2 QueryBuilder ГДЕ В поле ManyToMany