Symfony3 查询搜索功能DQL语句like查询

//前台页面代码    <form method="GET" action="{{ path(‘staff_index‘) }}" name="searchterm">
        <label>
            <input name="searchterm" type="text" value="" placeholder="输入名称" >
        </label>
        <input type="submit" value="查询">
    </form>
    /**
     * Lists all customer entities.
     *
     * @Route("/", name="staff_index")
     * @Method("GET")
     * @Template()
     */
    public function indexAction(Request $request)
    {    
        $em = $this->getDoctrine()->getManager();//实体管理
        $searchterm = $request->get(‘searchterm‘);//页面参数获取
        $page = $request->query->getInt(‘page‘,1);
        $query = $em->getRepository(‘XinXiBundle:Customer‘)//实体查询
            ->createQueryBuilder(‘u‘);
        if (!null == $searchterm){//如果参数不为空就执行like查询
            $query->where(
                $query->expr()->like(‘u.name‘, ‘:user‘)
            )
                ->setParameter(‘user‘,‘%‘.$searchterm.‘%‘)
                ->getQuery()
                ->getResult();
        }else{
            $query->orderBy(‘u.id‘,‘desc‘) //否则查询所有列表
            ->getQuery();
        }

        $pagination = $this->get(‘knp_paginator‘) //分页功能
            ->paginate($query,
                $page,5);
        return [
            ‘pagination‘ => $pagination,
        ];
    }

多个条件查询时使用 andWhere 如下:

        $em = $this->getDoctrine()->getManager();
        $searchterm = $request->get(‘searchterm‘);
        $page = $request->query->getInt(‘page‘,1);
        $query = $em->getRepository(‘XinXiBundle:Customer‘)
            ->createQueryBuilder(‘u‘);

        if (!null == $searchterm){
            $query
                ->andWhere($query->expr()->like(‘u.name‘, ‘:user‘))
                ->andWhere(‘u.status = :status‘)
                ->setParameter(‘status‘,true)
                ->setParameter(‘user‘,‘%‘.$searchterm.‘%‘)
                ->getQuery()
                ->getResult();

        }else{
            $query->orderBy(‘u.id‘,‘desc‘)
                ->where(‘u.status = :status‘)
                ->setParameter(‘status‘,true)
            ->getQuery();
        }

实体关联查询

  $em = $this->getDoctrine()->getManager();
        $searchterm = $request->get(‘searchterm‘);
        $page = $request->query->getInt(‘page‘, 1);
        $query = $em->getRepository(‘XinXiBundle:Finance‘)
            ->createQueryBuilder(‘f‘);
        if (!null == $searchterm) {
            $query
                ->join(‘f.customer‘ , ‘customer‘)  //关联实体属性 现在别名为customer
                ->andWhere($query->expr()->like(‘customer.name‘, ‘:name‘))//此时再使用customer.属性值进行like查询
                ->andWhere(‘f.status = :status‘)
                ->setParameter(‘status‘, true)
                ->setParameter(‘name‘, ‘%‘ . $searchterm . ‘%‘)
                ->orderBy(‘f.id‘, ‘desc‘)
                ->getQuery()
                ->getResult();
时间: 2024-10-20 05:43:42

Symfony3 查询搜索功能DQL语句like查询的相关文章

sql子查询 嵌套SELECT实用语句

嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回. 1.单行子查询 :单行子查询是指子查询的返回结果只有一行数据.当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较. 例:select ename,deptno,sal fro

ThinkPHP之中getlist方法实现数据搜索功能

自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like  %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句之中: HTML之中: 1 <form action="" method="get"> 2 <table class="account_table" width="100%" cellpadding="

6.2笔记-DQL语句查询数据库

一.DQL语句 1.常量列 SELECT `StudentName` AS 姓名, `Address` AS 地址, '北京信息中心' AS 学校名称 FROM `student`; 2.常用函数 聚合函数 AVG() 求平均分 count() 统计记录数 SELECT COUNT(1) FROM student; //效率高 select count(*) from student; max() 最大值 min() 最小值 sum() 求和 字符串函数: 日期函数: CURDATE(); #获

web day15 数据库概述,MySQL,SQL语句,数据查询语法DQL

数据库管理系统(DBMS)的概述 1. 什么是DBMS:数据的仓库 > 方便查询 > 可存储的数据量大 > 保证数据的完整.一致 > 安全可靠 2. DBMS的发展:今天主流数据库为关系型数据库管理系统(RDBMS 使用表格存储数据) 3. 常见DBMS:Orcale.MySQL.SQL Server.DB2.Sybase 4. DBMS = 管理程序 + 多个数据库(DB) 5. DB = 多个table(不只是table,但这里先不介绍其他组成部分) 6. table的结构(即

ES 搜索(5)—— 常用查询语句

match_all query #匹配所有文档,得分全为1.curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match_all": {} } } '  boost改变得分 curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type: application/jso

SQL结构化查询语——之DQL语言

记忆思路:SQL的DQL语言select查询命令.from从哪个表中where以什么条件select查询哪些列,order by是否基于某字段排序,limit # 输出多少行.一.单表查询1. 常用查询语法: SELECT 输出显示字段 FROM 表名 无条件查询语法:SELECT 指定输出的列 FROM 表名 ; 限制输出语法:SELECT 指定输出的列 FROM 表名 LIMIT 显示记录数 ; 条件查询语法:SELECT 指定输出的列 FROM 表名 WHRER 查询条件 : 条件查询再排

SQL Server之 (二) SQL语句 模糊查询 空值处理 聚合函数

(二) SQL语句  模糊查询  空值处理  聚合函数 自己学习笔记,转载请注明出处,谢谢!---酸菜 SQL :结构化查询语言(Structured Query Language),关系数据库管理系统的标准语言. Sybase与Mircosoft对标准SQL做了扩展:T-SQL (Transact-SQL); 注:①SQL对大小写的敏感取决于排序规则,一般不敏感; ②SQL对单引号的转义,用两个单引号来表示一个单引号; ③SQL执行顺序: 1→2→3→4 select  * ---------

SQL语句 - 基本查询

select select_list [ into new_table ] from table_source [ where search_condition ] [ group by broup_by_expression ] [ having search_condition ] [order by order_by_expression [ asc | desc ] select查询语句中的主要参数说明如下 select_list:查询的列或者表达式的列表,用逗号进行分隔. new_ta

DataUml Design 介绍9 - DataUML 1.3版本功能(查询分析器功能等)

DataUML 1.3 (下载)主要更新内容如下: 1.增加查询分析器功能: 2.增加打开历史文件记录功能: 3.修改查询对象功能: 4.增加显示对象长度功能: 5.增加配置显示表字段功能: 6.增加快速定位对象功能: 一.查询分析器功能 支持多种数据库的查询,能够执行SQL语句进行查询数据和操作数据.如下图: 1.点击"打开"可以打开一个SQL文件: 2.点击"新建查询"按钮新建一个查询分析器,可以选择数据源进行查询数据: 3.点击"执行"可以