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函数
.
PHP ORM框架ezpdo(2)之EZPDOSQL相关推荐
- php mysql orm_PHP ORM框架与简单代码实现(转)
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据 ...
- php的orm框架,PHP有什么ORM框架?
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ORM提供了实现持久化层的另一种模式,它采用映射元数据 ...
- PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...
- python数据库框架_Python数据库及ORM框架对比选择
使用Python进行MySQL的库主要有三个: Python-MySQL(更熟悉的名字可能是MySQLdb), PyMySQL SQLAlchemy. Python-MySQL: 资格最老,核心由C语 ...
- orm框架有哪些_java技术哪些是必学的?
我们接触过java需要的小伙伴们都知道java是一门强大而又复杂的编程语言,现如今在互联网行业,java的身影随处可见,可能刚学习的小伙伴们会被java语言庞大的体系图吓到,不过知识毕竟是一个积累的过 ...
- ORM 框架中SQLALCHEMY一点点个人总结
声明:工作原因涉及一点 What is ORM 答: object relation mapping 一种实现对象与数据库中的关系表映射的中间件.ORM 框架中最有名的是SQLALCHEMY 具体使用 ...
- Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架
Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...
- 10分钟手撸极简版ORM框架!
最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...
- [Android]Android端ORM框架——RapidORM(v1.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4748077.html Android上主流的ORM框架有很多 ...
最新文章
- mac os x 查看网络端口情况
- Android Color 判断色值小结
- ButterKnife不同版本配置
- 影响线型缩聚物分子量的因素_运城专业超高分子量聚乙烯油井内衬管生产基地...
- linux 开机启动文件夹,Linux开机启动流程
- Kotlin中?和!!的区别
- java标识符 width_width(宽度)
- DFS:C 小Y的难题(1)
- 跑了10千米,再一次伤了膝盖
- python 仅保留数字_Python基本语法元素 | 语法元素分析
- 三星堆的青铜机器人_三星堆“青铜纵目人像”到底仿照谁的相貌?专家终于讲出真相...
- 一个没暂时没有办法实现的问题和一个有意思的小问题!
- 第十二章——SQLServer统计信息(3)——发现过期统计信息并处理
- 让ssh跳转支持ipv6
- java.lang.NumberFormatException: For input string: 0.7
- 计算机组成与人体类比,2020年安徽公务员考试真题模拟:类比推理(7.13)
- 怎么评判网络舆情分析系统好不好的指标标准详解
- java list去重工具_开发常用小工具类:list集合去重
- android ar 动画,Android实现支付宝AR扫描动画效果
- RHCE 7.0 考试命令整理
热门文章
- (转)HIBERNATE与 MYBATIS的对比
- [转自脚本之家] Javascript cookie 详解
- python各进制、字节串间的转换
- linux系统内核流转浅析
- dfs-Rank the Languages
- 简明深度学习方法概述 Deep Learning:Methods and Application
- springboot thymeleaf 生成静态html
- 第一季度Teradata营收下降7.3% 利润下跌63%
- C++继承中析构函数 构造函数的调用顺序以及虚析构函数
- 使用 Swagger 文档化和定义 RESTful API