M 首页 > 技术文档 > Php > 文章查看

同类最新

相关文章


PHP ORM框架ezpdo(2)之EZPDOSQL

打印文档 收藏本文  
  其实这个框架的所谓ezpdosql就是hibernate的HSQL咯,没啥的,所以照罗列一次,没啥特别的
  
  首先是from子句
  $m = epManager::instance();
   
  
  $books = $m->find("from Book as b where b.title = ?", $title);
   
  //like的例子
  $books = $m->find("from Book as b where b.title like 'Intro%'");
   
  // null的例子
  $books = $m->find("from Book as b where b.title is null");
   
  
  $books = $m->find("from Book as b where b.pages < ?", $pages);
   
  $books = $m->find("from Book as b where b.title like ? and b.pages < ?", $title, $pages);
  
  之后是支持in参数了
  
  $books = $m->find("from Book as b where b.price in (2.50, 100.01)");
  
  $books = $m->find("from Book as b where b.author.name in ('Joe Smith', 'Jane Smith')");
  
  in里面也支持数组
  books = $m->find("from Book as b where b.price in (?)", array(2.50, 100.01));
  
  $books = $m->find("from Book as b where b.author.name in (?)", array('Joe Smith', 'Jane Smith'));
  
  
  当然要支持sort和limit了
  // find books and sort by book id (default ascending order)
  $books = $m->find("from Book as b where b.title like ? order by b.id", $title);
   
  // find books and sort by id in ascending order
  $books = $m->find("from Book as b where b.title like ? order by b.id asc", $title);
   
  // find books and sort by id in desscending order
  $books = $m->find("from Book as b where b.title like ? order by b.id desc", $title);
   
  // find books and sort by id in desscending order and limit to the first two only
  $books = $m->find("from Book as b where b.title like ? order by b.id desc limit 0, 2", $title);
  
  支持以下的聚合函数
  AVG(),
  COUNT(),
  MAX(),
  MIN()
  SUM()
  例子
  $cost = $m->find("sum(price) from Book where title like '%PHP%'");
  $num_pages = $m->find("sum(pages) from Book where title like '%PHP%'");
  $num_books = $m->find("count(*) from Book where title like '%PHP%'");
  $cost_per_page = $cost/$num_pages;
  $cost_per_book = $cost/$num_books;
  
  更复杂一点的例子,这里涉及到关联对象的HQL
  
  $authors = $m->find("from Author as a where a.contact.zipcode = '12345');
  
  这里,假设Author类和Contact类有一对一的关系,zipcode是contact类的一个属性,这里是找出所有作者的联系方式中邮政编码为12345的记录了。
  
  在已经有双向关联的对象中,如何用ezpdoz的SQL呢,举例子如下
  假如要找所有smith作者写的书,则
  $books = $m->find("from Book as b where b.authors.contains(a) and a.name = 'Smith'");
  因为authors和books是多对多关系,这里要用contains函数
  

浏览: 来源:jackyrong 编辑:江江 发布时间:2007-06-08 18:15
Copyright © 2004 www.pclib.com All rights reserved.
Email:yehuo(at)163.com Oicq:35314270 桂ICP备05008870号