我对教义有一个奇怪的问题。
我这里有两个检索数据的函数。
第一个:
public function findAccRecent(): array
{
$etats = [1, 2];
return $this->createQueryBuilder('l')
->innerJoin('l.auteurs', 'a')
->innerJoin('l.editeur', 'e')
->innerJoin('l.etatLibris', 'x')
->andWhere('x.id IN (:etat)')
->setParameter('etat', $etats)
->orderBy('l.xl_date', 'DESC')
->setMaxResults(18) //Par prudence, mettre 3x plus de résultat que le nombre souhaité
->getQuery()
->getResult();
}
第二个:
public function findAllLimit(int $page, $filtre = "", int $limit = 25, ):array
{
$result = [];
$query = $this->createQueryBuilder('l')
->innerJoin('l.auteurs', 'a')
->innerJoin('l.editeur', 'e')
->innerJoin('l.etatLibris', 'x')
->andWhere('l.xl_livre LIKE :val')
->orWhere('a.nom LIKE :val')
->orWhere('a.prenom LIKE :val')
->orWhere('l.xl_num LIKE :val')
->orWhere('e.nom LIKE :val')
->setParameter('val', "%".$filtre."%")
->orderBy('l.xl_num', 'DESC')
->setMaxResults($limit)
->setFirstResult($page * $limit - $limit);
$paginator = new Paginator($query);
$data = $paginator->getQuery()->getResult();
if(empty($data)) return $result;
//Calcul nb de pages
$pages = ceil($paginator->count() / $limit);
$result['data'] = $data;
$result['pages'] = $pages;
$result['page'] = $page;
$result['limit'] = $limit;
return $result;
}
第一个函数获取所有行没有问题。
第二个...忽略列“xl_ean”为空的所有行(它们是 varchar,因此它在数据库中仅显示空白)...
这就是我不明白的:为什么要这样做。我没有检查这个专栏,所以它没有意义,我也不知道如何纠正这个问题。我尝试删除函数中的“where”行,但它没有改变任何东西......
我希望你能帮我解决这个奇怪的问题。预先感谢您。