Zend Framework2 - TableGateway操作多个数据表(Multiple Table)

>>方法一, 注意 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();


 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值