为了能够方便的切换数据库,我们有必要使用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的更多相关文章

  1. Doctrine\ORM\QueryBuilder 源码解析之 where

    背景 最近有需求实现类似于 QueryBuilder 的谓词语句,就去翻看了它的源码.先看两个例子 例子1 $qb = $em->createQueryBuilder(); $qb->se ...

  2. 数据库和Doctrine(转载自http://www.111cn.net/phper/332/85987.htm)

    对于任何应用程序来说最为普遍最具挑战性的任务,就是从数据库中 读取和持久化数据信息.尽管symfony完整的框架没有默认集成ORM,但是symfony标准版,集成了很多程序,还自带集成了Doctrin ...

  3. CodeIgniter 下引入ORM Doctrine

    做了两年的CI开发,一直使用activeRecord来操作数据库.简单,轻巧加方便.最近一个项目交给手下去做,也是采用从数据库设计入手的开发流程,现在已经上线运行.经历了理清需求,设计数据库,在CI中 ...

  4. CI框架多个表前缀,如何使用框架语句querybuilder

    最近用CI框架遇到一个问题.2个前提条件: 1.数据库设计不规范,有的有表前缀(如:ck_table1),有的没有(如:table2)或者表前缀不一样: 2.数据库操作又想使用数据库操作语句query ...

  5. android ormlite queryBuilder.where() 多条件

    QueryBuilder<VideoTagInfo, Integer> queryBuilder = videoTagInfoIntegerDao.queryBuilder();try { ...

  6. Symfony2 Doctrine从现有Database生成Entity(转载自http://blog.it985.com/6809.html)

    在我的以前一章Symfony之十分钟入门说了怎样生成数据库,然后设计实体Entity,再同步数据库的表结构,一般我们的顺序都是这样:生成数据库->设计实体Entity->同步数据库表结构. ...

  7. php bin/console doctrine:migrations:migrate

    $ php bin/console doctrine:migrations:migrate                    XinXiBundleMigrationsWARNING! You a ...

  8. QueryBuilder 前端构造SQL条件的插件使用方法

    页面引入JS等: <script type="text/javascript" src="/qysds-jx/pages/gzrw/js/jquery.js&quo ...

  9. Elasticsearch java api 常用查询方法QueryBuilder构造举例

    转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...

随机推荐

  1. Python笔记_第四篇_高阶编程_GUI编程之Tkinter_2.控件类

    1. Label控件: 说明:标签控件,可显示文本 图示1: 实例1: import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title ...

  2. mongo客户端升级导致pymongo中使用聚合函数时出现异常

    一.异常信息 The 'cursor' option is required, except for aggregate with the explain argument 二.解决办法 #部分源代码 ...

  3. iframe高度相关知识点整理

    IFRAME 元素也就是文档中的文档. contentWindow属性是指指定的frame或者iframe所在的window对象. 用iframe嵌套页面是,如果父页面要获取子页面里面的内容,可以使用 ...

  4. jdk8下载地址

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SE Binaries ...

  5. [Algo] 280. Sort With 2 Stacks

    Given an array that is initially stored in one stack, sort it with one additional stacks (total 2 st ...

  6. 894A. QAQ#(暴力)

    题目出处:http://codeforces.com/problemset/problem/894/A 题目大意:计数依次出现QAQ的次数 #include<iostream> using ...

  7. ClipboardMonitor的下载和使用

    本工具可以实时监视剪贴板的变化,可以用于32位和64位的Excel. 在任务窗格上面输入一个正则表达式,例如(\d+)\-(\d+),按下Enter确认. 然后在其他地方,例如浏览器页面或者记事本中复 ...

  8. [USACO09OCT]谷仓里的回声Barn Echoes(hush、STL)

    https://www.luogu.org/problem/P2957 题目描述 The cows enjoy mooing at the barn because their moos echo b ...

  9. Linux常用指令(三)

    进入京东运维组实习,收到了很多同事的热心指导,自己也努力学习,按照他们给出的学习计划,真的很充实,学到了很多不只是开发方面的知识. 以下简单记录下自己的笔记,方便以后查阅. 1.文件系统 Linux系 ...

  10. 2019-2020-1 20199324《Linux内核原理与分析》第二周作业

    一.知识点总结 1.冯诺依曼体系结构的要点: ①五大基本类型部件:运算器.控制器.存储器.输入设备.输出设备 ②用二进制来表示指令和数据 ③ 核心:存储程序计算机 2.常见的汇编指令 mov指令(l指 ...