2016-07-05 12 views
1

ich diese Methode in meinem Laravel Controller haben:Lehre - bedingt wo

public function getUserOrders($userId) :array{  
    $results = $this->_em->createQueryBuilder() 
     ->select('Orders.orderItemCount') 
     ->from($this->entityClass, 'Orders') 
     ->Where("Orders.orderItemCount > '0'") 
     ->andWhere("Orders.orderTotalPrice > '0'") 
     ->andWhere("Orders.usersUserId = '{$userId}'") 
     ->getQuery()->getArrayResult(); 

    return $results; 
} 

Ich möchte diese Methode ändern, die $ userId optional sein, so letzte Bedingung ist in dieser Situation nicht erforderlich:

public function getUserOrders($userId = NULL) :array{  
    $results = $this->_em->createQueryBuilder() 
     ->select('Orders.orderItemCount') 
     ->from($this->entityClass, 'Orders') 
     ->Where("Orders.orderItemCount > '0'") 
     ->andWhere("Orders.orderTotalPrice > '0'") 
     if (!is_null($userId)) 
      ->andWhere("Orders.usersUserId = '{$userId}'") 
     ->getQuery()->getArrayResult(); 

    return $results; 
} 

Ich versuche herauszufinden, was der beste Weg ist, dies zu erreichen. Irgendein Vorschlag?

Antwort

0

diesen Fehler

public function getUserOrders($userId = NULL) :array{  
$results = $this->_em->createQueryBuilder() 
    ->select('Orders.orderItemCount') 
    ->from($this->entityClass, 'Orders') 
    ->Where("Orders.orderItemCount > '0'") 
    ->andWhere("Orders.orderTotalPrice > '0'"); 
    if (!is_null($userId)){ 
     $results->andWhere("Orders.usersUserId" = $userId); 
    } 
    $results->getQuery()->getArrayResult(); 

return $results; 
} 
+0

Parse Versuchen: Syntaxfehler, unerwartete '->' (T_OBJECT_OPERATOR) – AFN

+0

die Fehler geben Linie ..? Versuchen Sie, den Code –

+0

zu aktualisieren. Sehen Sie sich Ihren Code an. Sie haben ein Semikolon auf '-> andWhere (" Orders.orderTotalPrice> '0' ");'. Selbst wenn Sie das Semikolon entfernen, wird es auch nicht funktionieren. Hier gibt es mehr zu tun. – Ohgodwhy