Zend framework Zend2 TableGateway:如何检索一组数据

Zend framework Zend2 TableGateway:如何检索一组数据,zend-framework,zend-framework2,zend-db,zend-db-table,Zend Framework,Zend Framework2,Zend Db,Zend Db Table,我有一个ContactsTable.php模块和如下函数: public function getContactsByLastName($last_name){ $rowset = $this->tableGateway->select(array('last_name' => $last_name)); $row = $rowset->current(); if (!$row) { throw new \Exception("Co

我有一个ContactsTable.php模块和如下函数:

public function getContactsByLastName($last_name){
    $rowset = $this->tableGateway->select(array('last_name' => $last_name));
    $row = $rowset->current();
    if (!$row) {
        throw new \Exception("Could not find row record");
    }
    return $row;
}
public function getContactsByLastName($last_name){
        $rowset = $this->tableGateway->select(array('last_name' => $last_name));

        foreach ($rowset as $row) {
            echo $row['id'] . PHP_EOL;
        }
}
这是可以的,但它只返回一行。 问题在于我的数据库中有多条记录的姓氏相同,因此我的问题是: 如何返回一组数据

我试过这个:

$where = new Where();  
$where->like('last_name', $last_name);
$resultSet = $this->tableGateway->select($where);
return $resultSet;

但它不起作用。

您的第一个函数应该按预期工作,只需删除行即可

$row = $rowset->current();
因此,完整的函数应该如下所示:

public function getContactsByLastName($last_name){
    $rowset = $this->tableGateway->select(array('last_name' => $last_name));
    $row = $rowset->current();
    if (!$row) {
        throw new \Exception("Could not find row record");
    }
    return $row;
}
public function getContactsByLastName($last_name){
        $rowset = $this->tableGateway->select(array('last_name' => $last_name));

        foreach ($rowset as $row) {
            echo $row['id'] . PHP_EOL;
        }
}

您可以在文档中找到更多信息,您的第一个函数应该可以正常工作,只需删除行即可

$row = $rowset->current();
因此,完整的函数应该如下所示:

public function getContactsByLastName($last_name){
    $rowset = $this->tableGateway->select(array('last_name' => $last_name));
    $row = $rowset->current();
    if (!$row) {
        throw new \Exception("Could not find row record");
    }
    return $row;
}
public function getContactsByLastName($last_name){
        $rowset = $this->tableGateway->select(array('last_name' => $last_name));

        foreach ($rowset as $row) {
            echo $row['id'] . PHP_EOL;
        }
}

您可以在文档中找到更多信息,您的第一个函数应该可以正常工作,只需删除行即可

$row = $rowset->current();
因此,完整的函数应该如下所示:

public function getContactsByLastName($last_name){
    $rowset = $this->tableGateway->select(array('last_name' => $last_name));
    $row = $rowset->current();
    if (!$row) {
        throw new \Exception("Could not find row record");
    }
    return $row;
}
public function getContactsByLastName($last_name){
        $rowset = $this->tableGateway->select(array('last_name' => $last_name));

        foreach ($rowset as $row) {
            echo $row['id'] . PHP_EOL;
        }
}

您可以在文档中找到更多信息,您的第一个函数应该可以正常工作,只需删除行即可

$row = $rowset->current();
因此,完整的函数应该如下所示:

public function getContactsByLastName($last_name){
    $rowset = $this->tableGateway->select(array('last_name' => $last_name));
    $row = $rowset->current();
    if (!$row) {
        throw new \Exception("Could not find row record");
    }
    return $row;
}
public function getContactsByLastName($last_name){
        $rowset = $this->tableGateway->select(array('last_name' => $last_name));

        foreach ($rowset as $row) {
            echo $row['id'] . PHP_EOL;
        }
}

您可以在文档中找到更多信息

您可以使用结果集获取行数组:

public function getContactsByLastName($last_name) {
        $select = new Select();
        $select->from(array('u' => 'tbl_users'))
               ->where(array('u.last_name' => $last_name));

        $statement = $this->adapter->createStatement();
        $select->prepareStatement($this->adapter, $statement);
        $result = $statement->execute();

        $rows = array();
        if ($result->count()) {
            $rows = new ResultSet();
            return $rows->initialize($result)->toArray();
        }

        return $rows;
}

这对我有用。

您可以使用结果集获取行数组:

public function getContactsByLastName($last_name) {
        $select = new Select();
        $select->from(array('u' => 'tbl_users'))
               ->where(array('u.last_name' => $last_name));

        $statement = $this->adapter->createStatement();
        $select->prepareStatement($this->adapter, $statement);
        $result = $statement->execute();

        $rows = array();
        if ($result->count()) {
            $rows = new ResultSet();
            return $rows->initialize($result)->toArray();
        }

        return $rows;
}

这对我有用。

您可以使用结果集获取行数组:

public function getContactsByLastName($last_name) {
        $select = new Select();
        $select->from(array('u' => 'tbl_users'))
               ->where(array('u.last_name' => $last_name));

        $statement = $this->adapter->createStatement();
        $select->prepareStatement($this->adapter, $statement);
        $result = $statement->execute();

        $rows = array();
        if ($result->count()) {
            $rows = new ResultSet();
            return $rows->initialize($result)->toArray();
        }

        return $rows;
}

这对我有用。

您可以使用结果集获取行数组:

public function getContactsByLastName($last_name) {
        $select = new Select();
        $select->from(array('u' => 'tbl_users'))
               ->where(array('u.last_name' => $last_name));

        $statement = $this->adapter->createStatement();
        $select->prepareStatement($this->adapter, $statement);
        $result = $statement->execute();

        $rows = array();
        if ($result->count()) {
            $rows = new ResultSet();
            return $rows->initialize($result)->toArray();
        }

        return $rows;
}
这对我有用