Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis zapytania w Symfony Query Builder
Forum PHP.pl > Forum > PHP
baracuda
Witam serdecznie,
Mam taki kod napisany z "ręki":


  1. public function checkTransactionsByOrgin(string $origin): bool
  2. {
  3. $sql = 'SELECT 1 FROM `order` o JOIN payment_transaction_order pto ON(o.id = pto.order_id) WHERE o.origin = :origin;';
  4. $stmt = $this->connection->prepare($sql);
  5. $stmt->bindParam('origin', $origin, PDO::PARAM_STRING);
  6. $stmt->execute();
  7.  
  8. return (bool) $stmt->fetchColumn();
  9. }


Potrzebuję przerobić go na Symfonowego Query Buildera.
Próbowałem coś takiego, ale coś nie trybi:


  1. public function checkTransactionsByOrgin(string $origin): bool
  2. {
  3. $result = $this->createQueryBuilder($this->getAlias())
  4. ->addSelect('1')
  5. ->join('order', 'o')
  6. ->join('paymentTransactionOrder', 'pto')
  7. ->andWhere('o.origin = :origin')
  8. ->setParameter('origin', $origin)
  9. ->getQuery()
  10. ->getArrayResult();
  11.  
  12. return (bool) $result;
  13. }




Jak poprawie zapisać powyższy kod w Query Builderze?

Z góry dzięki za pomoc smile.gif






nospor
Jak " cos" nie trybi to chyba wypadaloby podac nam blad jakis a nie mamy sie domyslac...

Na pierwszy rzut oka widac ze zamiast FROM to dales o jeden JOIN za duzo
Salvation
Jeżeli wychodzisz z Repo Order, to ten pierwszy join jest zupełnie zbędny.

Wg mnie coś takiego powinno zadziałać:
  1. // OrderRepositiry::class
  2.  
  3. public function checkTransactionsByOrgin(string $origin): bool
  4. {
  5. $builder = $this->createQueryBuilder('o');
  6.  
  7. $builder
  8. ->select('o.id')
  9. ->leftJoin(PaymentTransactionOrder::class, 'pto', 'WITH', 'o.id = pto.order_id')
  10. ->where('o.origin = :origin')
  11. ->setParameter('origin', $origin);
  12.  
  13. $query = $builder->getQuery();
  14. $result = $query->getArrayResult();
  15.  
  16. return !empty($result);
  17. }

Z drugiej jednak strony, nie rozumiem po co ten JOIN jest w ogóle w zapytaniu skoro i tak go nie wykorzystujesz...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.