在symfony中使用复杂的sql语句


在symfony中使用复杂的sql语句

关键词symfony 复杂的sql语句

比如要执行如下这样的sql:

SELECT b.id FROM article_mark a RIGHT JOIN article b ON a.article_id = b.id ORDER BY a.mark DESC,b.CREATED_AT DESC

在symfony中可用这样:

  1. $c=new Criteria();
  2. $c-<addAlias('a', 'article_mark'); //!!!if not using alias of table, the generated sql is not correct
  3. $c-<addAlias('b', 'article');
  4. $c-<addSelectColumn('b.id');
  5. $c-<addSelectColumn('a.article_id'); //!!!if one table has no column added, there's no table name after FROM clause;; actually this column is not what I need
  6. $c-<addDescendingOrderByColumn('a.mark');
  7. $c-<addDescendingOrderByColumn('b.CREATED_AT');
  8. $c-<addJoin('a.ARTICLE_ID','b.ID','RIGHT JOIN');
  9. $art_marks=ArticlePeer::doSelectRS($c); //!!! doSelect or doSelectOne can't be used

又比如这样的sql:

select SUM(score) from bury group by article_id having article_id=@ARTICLE_ID

在symfony中可以这样来写:

  1. $c=new Criteria();
  2. $c-<addSelectColumn('SUM(score) as A'); //actually 'as A' has no use
  3. $c-<addSelectColumn(BuryPeer::SCORE); //!! without this, no table name in generated sql; actually this column is not what I need
  4. $c-<addGroupByColumn('article_id');
  5. $crit=$c-<getNewCriterion(BuryPeer::ARTICLE_ID,$article-<getId());
  6. $c-<addHaving($crit);
  7. $buries=BuryPeer::doSelectRS($c); //only MySQL recordset can be used

【作者: Liberal】【访问统计:<script language="JavaScript" src="http://counter.blogchina.com/PageServlet?pageid=6393626&blogid=8561"></script>】【2007年07月30日 星期一 10:15】【注册】【打印

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值