Zend framework2 如何在ZEND 2中执行查询并从结果中获取数据?

Zend framework2 如何在ZEND 2中执行查询并从结果中获取数据?,zend-framework2,Zend Framework2,我想以一种旧的方式在zend2中执行查询。我想编写查询并执行它。我不想使用保存、更新、删除功能。 这是我的模型: namespace Application\Model; use Zend\Db\Adapter\Adapter; use Zend\Db\TableGateway\AbstractTableGateway; use Zend\Db\Sql\Select; use Zend\Db\Sql\Sql; use Zend\Db\Adapter\Driver\ResultIn

我想以一种旧的方式在zend2中执行查询。我想编写查询并执行它。我不想使用保存、更新、删除功能。 这是我的模型:

    namespace Application\Model;

   use Zend\Db\Adapter\Adapter;
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Sql;
use Zend\Db\Adapter\Driver\ResultInterface;
use Zend\Db\ResultSet\ResultSet;

    class UsersTable extends AbstractTableGateway {


        public function __construct(Adapter $adapter) {
            $this->adapter = $adapter;
        }

        public function fetchAll() {

            $results  = $this->adapter->query("SELECT * FROM users");
            return $results->execute();
        }

    }
在函数fetchAll中,我要执行查询,请从用户处选择*。我该怎么做? 其结果是:

    object(Zend\Db\Adapter\Driver\Pdo\Result)#243 (8) {
  ["statementMode":protected]=>
  string(7) "forward"
  ["resource":protected]=>
  object(PDOStatement)#241 (1) {
    ["queryString"]=>
    string(19) "SELECT * FROM users"
  }
  ["options":protected]=>
  NULL
  ["currentComplete":protected]=>
  bool(false)
  ["currentData":protected]=>
  NULL
  ["position":protected]=>
  int(-1)
  ["generatedValue":protected]=>
  string(1) "0"
  ["rowCount":protected]=>
  NULL
}
您将创建一个数组

public function fetchAll() {
    $stmt = $this->adapter->query('SELECT * FROM user');
    $result = $stmt->execute();
    if($result->count() > 0) {
        $returnArr = array();
        while ($result->valid()) {
            $returnArr[] = $result->current();
            $result->next();
        }
        if(count($returnArr) > 0) {
            return $returnArr;
        }
    }
    return FALSE;
}


您可以执行以下操作,而不是循环resultset并调用next:

public function fetchAll() {
    $results  = $this->adapter->query("SELECT * FROM users");
    $result = $results->execute();
    return $result->getResource()->fetchAll();
}

函数将以数组的形式返回数据。

我想这是一个很难回答的问题:当前函数做什么?我只是不知道;我不明白为什么我需要它?你想要什么?此函数将表用户的内容作为数组提供给您。您可以通过执行以下操作来避免foreach循环:请参阅此处的最后一个答案:。使用这个答案会产生一个额外的循环,因此这不是最佳做法。fetchAll是一个PDO函数。在另一种情况下,它可能不存在!?
$result = $result->toArray();
public function fetchAll() {
    $results  = $this->adapter->query("SELECT * FROM users");
    $result = $results->execute();
    return $result->getResource()->fetchAll();
}