我有一个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;
}
这没关系,但它只返回一行。 问题是在我的数据库中我有多个具有相同姓氏的记录,所以我的问题是: 如何返回一组数据?
我试过了:
$where = new Where();
$where->like('last_name', $last_name);
$resultSet = $this->tableGateway->select($where);
return $resultSet;
但它不起作用。
答案 0 :(得分:3)
您的第一个功能应该按预期工作,只需删除行
$row = $rowset->current();
因此,完整的功能应如下所示:
public function getContactsByLastName($last_name){
$rowset = $this->tableGateway->select(array('last_name' => $last_name));
foreach ($rowset as $row) {
echo $row['id'] . PHP_EOL;
}
}
您可以在文档http://framework.zend.com/manual/2.2/en/modules/zend.db.table-gateway.html
中找到更多信息答案 1 :(得分:0)
您可以使用结果集获取行数:
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;
}
它为我工作。