ZendFramework2应用实例,使用Zend\Db\TableGateway\TableGateway获取数据

本文介绍了如何使用 Zend Framework 的 TableGateway 进行数据操作,包括基本的查询、使用 join 方法进行联表查询,并展示了如何设置别名以提高查询的可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\TableGateway\TableGateway;

class IndexController extends AbstractActionController
{
    
    public function indexAction()
    {
        $sm = $this->getServiceLocator();
        $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
        
        $goods_table=new TableGateway("ecm_goods",$dbAdapter);

        //这句相当于执行了sql语句:SELECT "ecm_goods".* FROM "ecm_goods" ORDER BY "goods_id" ASC LIMIT '20' OFFSET '10'
        $goods_list=$goods_table->select(function($select){
                return $select->limit(20)->offset(10)->order("goods_id");
            });
        
        
        return new ViewModel(array("goods_list"=>$goods_list));
    }
    
}

 join使用方法

$goods_list=$goods_table->select(function($select){
            $select->limit(5)->offset(10)->order("ecm_goods.goods_id")->join("ecm_goods_spec","ecm_goods.goods_id=ecm_goods_spec.goods_id");
            return $select;
            });

执行后sql语句如下

SELECT "ecm_goods".*, "ecm_goods_spec".* FROM "ecm_goods" INNER JOIN "ecm_goods_spec" ON "ecm_goods"."goods_id"="ecm_goods_spec"."goods_id" ORDER BY "ecm_goods"."goods_id" ASC LIMIT '5' OFFSET '10'

别名使用方法

$goods_list=$goods_table->select(function($select){
            $select->limit(5)->offset(10)->order("ecm_goods.goods_id")->join(array("gs"=>"ecm_goods_spec"),"ecm_goods.goods_id=gs.goods_id");
                return $select;
            });

执行后sql语句如下,暂时只实现在join方法里实现别名,如果是自己生成的select对象可以通过$select->from(array("g"=>"ecm_goods"))来使用别名

SELECT "ecm_goods".*, "gs".* FROM "ecm_goods" INNER JOIN "ecm_goods_spec" AS "gs" ON "ecm_goods"."goods_id"="gs"."goods_id" ORDER BY "ecm_goods"."goods_id" ASC LIMIT '5' OFFSET '10'

left join 和 right join  等使用方法

$select->join("ecm_goods_spec","ecm_goods.goods_id=ecm_goods_spec.goods_id",$select::SQL_STAR,$select::JOIN_LEFT);
JOIN_INNER  JOIN_OUTER  JOIN_LEFT  JOIN_RIGHT

 

 

转载于:https://www.cnblogs.com/zhenzhong/p/3196139.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值