모든 경우에 잘 작동하는 간단한 쿼리를 사용합니다. 이것은 사용자가 (예를 들어)되지 않은 사진이있는 경우 쿼리가 잘가는 것을 의미한다 :DQL을 사용하여 교리 쿼리 최적화
$user=$em->getRepository('UserBundle:User')->findOneById($id_user);
엔티티 사용자는이 피하기 위해 쿼리 수를 최적화 할 수있는 이유는 다른 기업과의 관계를 많이 가지고 교리의 게으른 적재. 그럼 난 DQL가 QueryBuilder 사용하여이 쿼리를 만들 : 사용자가 모든 관련 기관에 대한 정보가있는 경우
이public function findUsuario($id_user){
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->select('u, p, co, ci, f, s, q, b, r, se, com, t, beb, prof, v, h, i, idi, usf')
->from('UserBundle:User', 'u')
->innerJoin("u.pais", 'p')
->innerJoin("u.comunidad", 'co')
->innerJoin("u.ciudad", 'ci')
->innerJoin("u.fotos", 'f')
->innerJoin("u.sexo", 's')
->innerJoin("u.quiero", 'q')
->innerJoin("u.busco", 'b')
->innerJoin("u.relacionPareja", 'r')
->innerJoin("u.sexualidad", 'se')
->innerJoin("u.complexion", 'com')
->innerJoin("u.tabaco", 't')
->innerJoin("u.bebida", 'beb')
->innerJoin("u.profesion", 'prof')
->innerJoin("u.vivienda", 'v')
->innerJoin("u.hijo", 'h')
->innerJoin("u.ingreso", 'i')
->innerJoin("u.idiomas", 'idi')
->innerJoin("u.usuarioFavoritos", 'usf')
->where('u.id = :id')
->setParameter('id', $id_user);
$query= $qb->getQuery();
return $query->getSingleResult();
}
이 잘 작동을하지만, 예를 들어 사용자가 어떤 사진이없는 경우, 다음과 같은 예외가 발생합니다 : "어떤 결과가 발견되지 않았다 적어도 하나의 행이 예상되었지만 쿼리에 대해 "
나는 왜 누군가가 약간의 빛을 비추 수 있습니까? 감사
, 지금은 잘 작동합니다. 감사! 많은 JOINS에 관해서는 각 사용자마다 많은 속성이 있지만 이는 응용 프로그램 유형에 고유합니다. –