2013-01-17 31 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的方式适用于复杂的标识符,但对于简单比较而言,这是一种更易读的方式。