doctrine queryBuilder
为了能够方便的切换数据库,我们有必要使用doctrine的queryBuilder, 但是估计很多人都是不喜欢的(我也是),之前尝试用的时候,发现在doctrine定义的SELECT语法中并没有CONCAT, GROUP_CONCAT 这些有时候会用到的函数,于是就放弃了,今天才发现原来我们还可以这么用。。。。
需要特别注意的是我们在写字段名字的时候,例如
user_id,这种就要写成userId, 与doctrine 定义entity的语法是一致的。
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->add('select', 'concat('ttt', u.id)')
->from(User::class, 'u')
->where($qb->expr()->eq('u.id','?1'))->setParameter(1,171);
$res = $qb->getQuery()->getArrayResult();
var_dump($res);exit;
$qb = $this->getEntityManager()->createQueryBuilder();
$qu = $qb->select('u')
->from(User::class, 'u')
->where($qb->expr()->andX(
$qb->expr()->eq('u.profileId', 9178),
$qb->expr()->eq('u.logNum', '1'),
$qb->expr()->eq('u.id', 177)
))
->getQuery();
$res = $qu->getArrayResult();
var_dump(大专栏 doctrine queryBuilder class="nv">$res);exit;
下面的与上面的效果是一致的。
$qb = $this->getEntityManager()->createQueryBuilder();
$qu = $qb->select('u')
->from(User::class, 'u')
->andWhere($qb->expr()->eq('u.logNum', '1'))
->andWhere($qb->expr()->eq('u.profileId', 9178))
->where($qb->expr()->eq('u.id', 177))
->where($qb->expr()->eq('u.name', $qb->expr()->literal($name))) // 字符串要使用literal修饰
->getQuery();
$res = $qu->getArrayResult();
var_dump($res);exit;
join语句
$qb->select('u.work_name, ui.city')
->from(User::class, 'u')
->leftJoin(UserInfo::class, 'ui', Join::LEFT_JOIN, $expr->eq('u.id', 'ui.uid'))
->orderBy('u.id', 'desc')->setMaxResults(10);
return $qb->getQuery()->getScalarResult();
doctrine queryBuilder的更多相关文章
- Doctrine\ORM\QueryBuilder 源码解析之 where
背景 最近有需求实现类似于 QueryBuilder 的谓词语句,就去翻看了它的源码.先看两个例子 例子1 $qb = $em->createQueryBuilder(); $qb->se ...
- 数据库和Doctrine(转载自http://www.111cn.net/phper/332/85987.htm)
对于任何应用程序来说最为普遍最具挑战性的任务,就是从数据库中 读取和持久化数据信息.尽管symfony完整的框架没有默认集成ORM,但是symfony标准版,集成了很多程序,还自带集成了Doctrin ...
- CodeIgniter 下引入ORM Doctrine
做了两年的CI开发,一直使用activeRecord来操作数据库.简单,轻巧加方便.最近一个项目交给手下去做,也是采用从数据库设计入手的开发流程,现在已经上线运行.经历了理清需求,设计数据库,在CI中 ...
- CI框架多个表前缀,如何使用框架语句querybuilder
最近用CI框架遇到一个问题.2个前提条件: 1.数据库设计不规范,有的有表前缀(如:ck_table1),有的没有(如:table2)或者表前缀不一样: 2.数据库操作又想使用数据库操作语句query ...
- android ormlite queryBuilder.where() 多条件
QueryBuilder<VideoTagInfo, Integer> queryBuilder = videoTagInfoIntegerDao.queryBuilder();try { ...
- Symfony2 Doctrine从现有Database生成Entity(转载自http://blog.it985.com/6809.html)
在我的以前一章Symfony之十分钟入门说了怎样生成数据库,然后设计实体Entity,再同步数据库的表结构,一般我们的顺序都是这样:生成数据库->设计实体Entity->同步数据库表结构. ...
- php bin/console doctrine:migrations:migrate
$ php bin/console doctrine:migrations:migrate XinXiBundleMigrationsWARNING! You a ...
- QueryBuilder 前端构造SQL条件的插件使用方法
页面引入JS等: <script type="text/javascript" src="/qysds-jx/pages/gzrw/js/jquery.js&quo ...
- Elasticsearch java api 常用查询方法QueryBuilder构造举例
转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...
随机推荐
- 使用tensorflow的retrain.py训练图片分类器
参考 https://hackernoon.com/creating-insanely-fast-image-classifiers-with-mobilenet-in-tensorflow-f030 ...
- C#.NET中的ToString()数字格式化
数字格式字符串-----货币-----.ToString("C");.ToString("c");例 2.5.ToString("c") - ...
- jQuery篇
jQuery 1.为什么使用jQuery? js中window onload事件只能出现一次,如果出现多次,后面的事件会覆盖掉前面的事件 js代码容错差 简单的动画效果实现很繁琐,例如简单的动画渐变效 ...
- SaltStack事件驱动 – event reactor
Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如Minion服务启动后请求Master签发证书或者证书校验的过程, ...
- Android之布局RelativeLayout
线性布局的weight属性在等比例分配时比较方便,但是对复杂的界面,嵌套多层LinearLayout布局会导致渲染变慢,占用更多系统资源:而使用RelativeLayout的话,可能仅仅需要一层就可以 ...
- tomcat更新class不生效
替换线上lib里的class不生效,需要想想是不是前人为了图方便在classes里面扔了一份老版本class
- 定时任务--Timer()实现
Java的Timer以及TimerTask类可以帮助我们实现定时器功能,利用servlet监听程序可以实现WEB服务启动之后执行某些工作.两者结合就可以再web应用中实现定时器功能. 1.计划类代码S ...
- HDU 6126 Give out candies(网络流)
题目给出n,m,k 然后给出n*m的矩阵a[i][j]代表第i个人在获得j 颗糖果能得到的满足值, 然后k是k行每行输入三个整数x,y,z ,x,y,z表示一组限制表示第x个人分到的糖数减去第 ...
- reviewer回信
收到reviewer回信之后的情况 Peer review其实是一个CA(质检)过程.文章投稿后的几种状态:Reject.resubmit和revise-and-resubmit. 收到回信之后,re ...
- T-shirt
题目描述 JSZKC is going to spend his vacation! His vacation has N days. Each day, he can choose a T-shi ...