为了能够方便的切换数据库,我们有必要使用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的变量和注释

    变量 python的变量就像一个名字,一个变量对应一个内存地址.当我们定义一个变量时,Python解释器会在内存中开辟一片空间,用于存放各种数据(字符串.列表.元组.字典.对象....). 不同的变量 ...

  2. Long型转ZonedDateTime型

    /** * 将Long类型转化成0 * @author yk * @param time * @return */public static ZonedDateTime toZonedDateTime ...

  3. OpenCV On Android环境配置最新&最全指南(Eclipse篇)

    简介 本教程是经过本人多次踩坑,并参考网上众多OpenCV On Android的配置教程总结而来,尽希望能帮助学习移动图像处理的朋友们少走弯路.这也是本人第一次在简书上发布文章,如有不足,希望各位d ...

  4. Pytorch——BERT 预训练模型及文本分类

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

  5. elasticsearch 大集群,双重别名,滚动更新分词方案

    elasticsearch 滚动更新分词 国内用ik.hanlp.ansj或基于其二次开发的比较多 必然有分词变更的操作(主要是是加词) reindex+别名可以解决一部分问题,但在大集群上会影响业务 ...

  6. tensorflow(三)

    1.placeholder 一个数据占位符,用于在构建一个算法时留出一个位置,然后在run时填入数据. x = tf.placeholder(tf.float32) y = tf.placeholde ...

  7. Linux 使用rpm方式安装最新mysql(5.7)步骤以及常见问题解决

    第一步:下载rpm包 mysql官网下载:http://dev.mysql.com/downloads/mysql/ 但如果你的下载网速不好的话也可以点下面的链接下载自己想要的版本 http://mi ...

  8. Pwn-Gcc编译命令

  9. PyTorch基础——使用神经网络识别文字中的情感信息

    一.介绍 知识点 使用 Python 从网络上爬取信息的基本方法 处理语料"洗数据"的基本方法 词袋模型搭建方法 简单 RNN 的搭建方法 简单 LSTM 的搭建方法 二.从网络中 ...

  10. MRP自动运算设置

    1.执行计划-删除老的调度计划: 2.运算日志-清除冲突: 3.MRP计划运算向导,清除预留: 4.创建MRP凌晨调度任务,名称自己修改: 5.创建完成: 6.设置消息通知: