Php 如何将给定的多连接查询转换为ZendFrame工作查询

Php 如何将给定的多连接查询转换为ZendFrame工作查询,php,zend-framework,zend-db,zend-db-table,Php,Zend Framework,Zend Db,Zend Db Table,像这样的东西怎么样: SELECT `blg`.`id` , `blg`.`heading` , `blg`.`description` , `cat`.`name` AS `categoryname` , `mem`.`firstname` AS `user` , ( SELECT COUNT( * ) FROM blog_comments WHERE blog_comments.status = '1' AND blog_comments.blogid = blg.id) A

像这样的东西怎么样:

SELECT
 `blg`.`id` ,
 `blg`.`heading` , 
 `blg`.`description` ,
 `cat`.`name` AS `categoryname` ,
 `mem`.`firstname` AS `user` ,
  ( SELECT COUNT( * ) FROM blog_comments WHERE blog_comments.status = '1' AND blog_comments.blogid = blg.id) AS `commentcount`
    FROM `blogs` AS `blg`
  INNER JOIN `blog_category` AS `cat` ON blg.category = cat.id
  INNER JOIN `members_member` AS `mem` ON blg.user = mem.id
  LEFT JOIN `blog_comments` AS `cmt` ON blg.id = cmt.blogid
  WHERE (        blg.status = '1'        )
  GROUP BY blg.id ORDER BY `blg`.`id` ASC
输出:

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();

        $dbExpr = new Zend_Db_Expr("(SELECT COUNT( * ) FROM blog_comments WHERE blog_comments.status = '1' AND blog_comments.blogid = blg.id) AS `commentcount`");        

        $select->from(
                    array('blg' => 'blogs'), 
                    array('id', 'heading', 'description', 'name as categoryname', $dbExpr)
               )->joinInner(
                            array('cat' => 'blog_category'), 
                            'blg.category = cat.id',
                            array()
               )->joinInner(
                            array('mem' => 'members_member'), 
                            'blg.user = mem.id',
                            array()
               )->joinLeft(
                            array('cmt' => 'blog_comments'), 
                            'blg.id = cmt.blogid',
                            array()
               )->where('blg.status = ?', '1')
                ->group('blg.id')
                ->order('blg.id ASC');


        echo $select->assemble();
        exit;

像这样的东西怎么样:

SELECT
 `blg`.`id` ,
 `blg`.`heading` , 
 `blg`.`description` ,
 `cat`.`name` AS `categoryname` ,
 `mem`.`firstname` AS `user` ,
  ( SELECT COUNT( * ) FROM blog_comments WHERE blog_comments.status = '1' AND blog_comments.blogid = blg.id) AS `commentcount`
    FROM `blogs` AS `blg`
  INNER JOIN `blog_category` AS `cat` ON blg.category = cat.id
  INNER JOIN `members_member` AS `mem` ON blg.user = mem.id
  LEFT JOIN `blog_comments` AS `cmt` ON blg.id = cmt.blogid
  WHERE (        blg.status = '1'        )
  GROUP BY blg.id ORDER BY `blg`.`id` ASC
输出:

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();

        $dbExpr = new Zend_Db_Expr("(SELECT COUNT( * ) FROM blog_comments WHERE blog_comments.status = '1' AND blog_comments.blogid = blg.id) AS `commentcount`");        

        $select->from(
                    array('blg' => 'blogs'), 
                    array('id', 'heading', 'description', 'name as categoryname', $dbExpr)
               )->joinInner(
                            array('cat' => 'blog_category'), 
                            'blg.category = cat.id',
                            array()
               )->joinInner(
                            array('mem' => 'members_member'), 
                            'blg.user = mem.id',
                            array()
               )->joinLeft(
                            array('cmt' => 'blog_comments'), 
                            'blg.id = cmt.blogid',
                            array()
               )->where('blg.status = ?', '1')
                ->group('blg.id')
                ->order('blg.id ASC');


        echo $select->assemble();
        exit;