2016-07-05 46 views
1

我在Laravel控制器有這樣的方法:主義 - 有條件的地方

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; 
} 

我想改變這個方法$用戶id將是可選的,所以最後一個條件是不是在這種情況下要求:

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; 
} 

我想弄清楚什麼是實現這一目標的最佳方法。任何建議?

回答

0

試試這個

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

解析錯誤:語法錯誤,意外 ' - >'(T_OBJECT_OPERATOR) – AFN

+0

哪一行給出的錯誤..?嘗試更新代碼 –

+0

看看你的代碼。你在' - >和Where(「Orders.orderTotalPrice>'0'」);'上有分號。即使您刪除了分號,它也無法工作。這裏還有更多的事情要做。 – Ohgodwhy