sql >> Base de Datos >  >> RDS >> Mysql

Necesito ayuda para crear una consulta SQL con combinación y dónde en una relación de muchos a muchos

La Doctrina IN la función espera un formato de (1, 2, 3, 4, ...) después de IN declaración. Desafortunadamente, no está diseñado para condicionales de columna para probar la membresía.

Sin embargo, creo que estás buscando el MEMBER OF Función de doctrina:

public function findAllBySectionAndCategory($section, $category) {
    $query = $this->getEntityManager()
        ->createQuery(
            'SELECT v FROM OSCMySportBundle:Video v WHERE v.section = :section AND :category MEMBER OF v.categories'
        )
        ->setParameter('section', $section)
        ->setParameter('category', $category);
    return $query->getResult();
}

Puedes pasar un objeto Doctrine válido o el identificador a $category usando esta funcionalidad.

El ejemplo de esto está oculto en lo profundo de Documentos de doctrina :

$query = $em->createQuery('SELECT u.id FROM CmsUser u WHERE :groupId MEMBER OF u.groups');
$query->setParameter('groupId', $group);
$ids = $query->getResult();