学说和可为空列的奇怪问题

问题描述 投票:0回答:1

我对教义有一个奇怪的问题。

我这里有两个检索数据的函数。

第一个:

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”行,但它没有改变任何东西......

我希望你能帮我解决这个奇怪的问题。预先感谢您。

php symfony null doctrine repository
1个回答
0
投票

我怀疑您正在寻找

leftJoin
而不是
innerJoin
,因为值可能是
null
。感谢您查看这篇文章这篇文章以获取有关差异的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.