1
我在我的代碼中使用了一個簡單的查詢,在所有情況下都能正常工作。這意味着,如果用戶還沒有照片(例如)查詢那張罰款:使用DQL優化原則查詢
$user=$em->getRepository('UserBundle:User')->findOneById($id_user);
實體的用戶有很多與其他實體的關係,這是優化的查詢數,以避免理由學說的懶惰加載。然後,我讓這個查詢使用QueryBuilder的DQL:
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,是因爲每個用戶都有很多屬性,但這是應用程序類型固有的。 –