2013-01-17 75 views
3

我想用此方法添加where子句。Zend Framework 2 - Where子句

public function fetchAll() 
{ 
    $resultSet = $this->select(); 
    return $resultSet; 
} 

我加入這個樣子。

public function fetchAll() 
{ 
    $resultSet = $this->select(); 
    $resultSet->where("status = ?", 1); 
    return $resultSet; 
} 

但是,它顯示了下面的錯誤。

Fatal error: Call to undefined method Zend\Db\ResultSet\ResultSet::where()

你能幫我添加WHERE,或者WHERE,GROUP和ORDER與上面提到的方法。

+0

「status」是字段名嗎? – Kenzo

+0

謝謝。是。狀態列有0和1個值。我想選擇1. – 2plus

+0

我假設你從'TableGateway'延伸? – Sam

回答

1

希望這會幫助你:

public function Profile($accountid) 
    { 
     $result = $this->select(function (Select $select) use ($accountid) { 
      $select 
       ->columns(array(
        'datefrom', 
        'available', 
        'used', 
        'details' 
       )) 
       ->where($this->adapter->getPlatform()->quoteIdentifier('accountid') . ' = ' . $this->adapter->getPlatform()->quoteValue($accountid)); 
     }); 

     $row = $result->current(); 

     if (!$row) { 
      throw new \Exception('could_not_find_row'); 
     } 

     return $row; 
    } 
+0

我發現use()有幫助。儘管如此,我仍然無法找到任何有關該聲明的內容這是Zend的東西還是PHP的東西? – NaN

+1

use()是一個PHP的東西。 – Diemuzi

1

你也可以做$sql->select()->where(array('status' => 1))$table->select(array('status' => 1))(煩人,希望他們使用相同的語法)。

你傳遞一個關聯數組與映射column => value(因爲它是一個數組,你可以給它多個子句)。 Diemuzi的方式適用於複雜的標識符,但對於簡單比較而言,這是一種更易讀的方式。