У меня есть две функции для получения данных.
первая:
Код: Выделить всё
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», который null (это varchar, поэтому в базе данных отображается только пробел)...
Вот чего я не понимаю: почему он это делает. Я не проверял этот столбец, поэтому он не имеет смысла, и я не знаю, как исправить проблему. Я попробовал удалить строки «где» в функции, но это ничего не изменило...
Надеюсь, вы поможете мне с этой странной проблемой. Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ble-column