>>方法一, 注意 Only Use For MySQL tables in the InnoDB Format 可用,
and MyIsam does not support Transactions 不可用
maybe something tricky like this :
$tab_category = $this->tableGateway->table;
$tab_cate_desc = $this->cateDescGateway->table;
if ($paginated){
$select = new Select();
$select->from($tab_category);
$select->columns ( array ('*'));
$select->join($tab_cate_desc, $tab_category . ".category_id =" . $tab_cate_desc . ".category_id", array('name'), 'left');
if (is_array($qs)){
foreach ($qs as $key=>$value){
$select->where->like($key, '%'. $value .'%');
}
}
//合并后在view 行数据为array()
$category_merge = array_merge((array)(new Category()), (array)(new CategoryDescription()));
$rs = new ResultSet();
//参数$rs类型决定视图返回的行数据类型为对象或数组
$rs->setArrayObjectPrototype(new ArrayObject(new Category())); //相当返回一个空的操作对象rs
$pageAdapter = new DbSelect($select, $this->tableGateway->getAdapter(),$rs);
$paginator = new Paginator($pageAdapter); //由构造器创建一个 $paginator实例
return $paginator;
}
//不分页
$select = new \Zend\Db\Sql\Select ;
$select->from($tab_category);
$select->columns(array('*'));
$select->join($tab_cate_desc, $tab_category . ".category_id =" . $tab_cate_desc . ".category_id", array('name'), 'left');
if (is_array($qs)){
foreach ($qs as $key=>$value){
$select->where->like($key, '%'. $value .'%');
}
}
$adapter = new Adapter($this->sm->get('config')['db']);
$sql = new Sql($adapter);
$statement = $sql->prepareStatementForSqlObject($select);
$resultSet = $statement->execute();