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

问题描述 投票:0回答:3

我想以老式方式在 zend2 中执行查询。我想编写查询并执行它。我不想使用函数 save()、update()、delete()。 这是我的模型:

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 中,我想执行查询“select * from users”。我怎样才能做到这一点 ? 结果是:

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
}
zend-framework2
3个回答
9
投票

您可以执行以下操作,而不是循环结果集并调用 next():

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

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


1
投票

你将创建一个数组

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

0
投票
$result = fetchAll();
foreach($result as $row){
    $row->column1
    $row->column2
}

$result = $result->toArray();
© www.soinside.com 2019 - 2024. All rights reserved.