Zapis zapytania w Symfony Query Builder

0

Witam serdecznie,
Mam taki kod napisany z "ręki":

public function checkTransactionsByOrgin(string $origin): bool
{
    $sql = 'SELECT 1 FROM `order` o JOIN payment_transaction_order pto ON(o.id = pto.order_id) WHERE  o.origin = :origin;';
    $stmt = $this->connection->prepare($sql);
    $stmt->bindParam('origin', $origin, PDO::PARAM_STRING);
    $stmt->execute();

    return (bool) $stmt->fetchColumn();
}

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

public function checkTransactionsByOrgin(string $origin): bool
{
    $result = $this->createQueryBuilder($this->getAlias())
        ->addSelect('1')
        ->join('order', 'o')
        ->join('paymentTransactionOrder', 'pto')
        ->andWhere('o.origin = :origin')
        ->setParameter('origin', $origin)
        ->getQuery()
        ->getArrayResult();

    return (bool) $result;
}

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

Z góry dzięki za pomoc :)

0

co nie trybi? + where, a nie andwhere

1

Tak na pierwszy rzut oka:

  • czy masz przygotowane prawidłowo zdefiniowane encje? Jeżeli tak, to wklej kod, żeby było widać, jak zdefiniowana jest relacja pomiędzy order a payment_transaction_order. Query builder operuje na klasach, więc tutaj nie wskazujesz na tabele w bazie, ale klasy encji (a te klasy powinny być z dużej litery)
  • zamiast ->join('order', 'o') powinno być from
  • join zwiazany z paymentTransactionOrder to powinien albo oprzeć się na relacji zdefiniowanej w encjach, albo trzeba dodać odpowiednie warunki,
  • w związku z powyższym przykład mógłby wyglądać tak
    $result = $this->createQueryBuilder()
        ->select('1')
        ->from('Order', 'o')
        ->innerJoin('PaymentTransactionOrder', 'pto', 'WITH', 'pto.orderId = o.id')
        ->andWhere('o.origin = :origin')
        ->setParameter('origin', $origin)
        ->getQuery()
        ->getArrayResult();
    

Oczywiście tutaj kod pisany z palca i należ go traktować jako szkic (a raczej wróżenie z fusów, wszystko zależy od tego jak są zdefiniowane klasy encji), a nie działający przykład (wszystko zależy od definicji klas itp) Wklej treść błędu jaki wyskakuje na ekranie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1