zoukankan      html  css  js  c++  java
  • phalcon查询

    对phalcon的查询做了详细了解,并不算深入研究哈,知识了解使用方法,

    1. 使用模型查询方法:model::find(array("limit"=>10))

        缺陷:条件有限

        参数列表:

    参数描述举例
    conditions 查询操作的搜索条件。用于提取只有那些满足指定条件的记录。默认情况下 PhalconMvcModel 假定第一个参数就是查询条件。 “conditions” => “name LIKE ‘steve%’”
    columns 只返回指定的字段,而不是模型所有的字段。 当用这个选项时,返回的是一个不完整的对象。 “columns” => “id, name”
    bind 绑定与选项一起使用,通过替换占位符以及转义字段值从而增加安全性。 “bind” => array(“status” => “A”, “type” => “some-time”)
    bindTypes 当绑定参数时,可以使用这个参数为绑定参数定义额外的类型限制从而更加增强安全性。 “bindTypes” => array(Column::BIND_TYPE_STR, Column::BIND_TYPE_INT)
    order 用于结果排序。使用一个或者多个字段,逗号分隔。 “order” => “name DESC, status”
    limit 限制查询结果的数量在一定范围内。 “limit” => 10 / “limit” => array(“number” => 10, “offset” => 5)
    group 从多条记录中获取数据并且根据一个或多个字段对结果进行分组。 “group” => “name, status”
    for_update 通过这个选项, PhalconMvcModel 读取最新的可用数据,并且为读到的每条记录设置独占锁。 “for_update” => true
    shared_lock 通过这个选项, PhalconMvcModel 读取最新的可用数据,并且为读到的每条记录设置共享锁。 “shared_lock” => true
    cache 缓存结果集,减少了连续访问数据库。 “cache” => array(“lifetime” => 3600, “key” => “my-find-key”)
    hydration Sets the hydration strategy to represent each returned record in the result “hydration” => Resultset::HYDRATE_OBJECTS

      2.使用面向对象的方式来创建查询:

    $builder = wxArticle::query();
            $start = strtotime(date("Ymd",strtotime('-6 day',time())));
            $end = time();
            $builder->join('WeFengYunModelswxArticleUpdate','u.article_id = WeFengYunModelswxArticle.id','u');
            $builder->columns(array('WeFengYunModelswxArticle.article_title'));
            switch ($filter) {
                case 'hot':
                    $builder->orderBy('u.article_real_read desc');
                    break;
                case 'new':
                    $builder->orderBy('WeFengYunModelswxArticle.article_ctime desc');
                    break;
                default:
                    return '';
                    break;
            }
            $builder->limit($limit);
            print_r($bulider->execute());die;
            return $builder->execute();

      3.使用构建器查询:

        

    $builder = $this->modelsManager->createBuilder();
            $start = strtotime(date("Ymd",strtotime('-6 day',time())));
            $end = time();
            $builder->from(['a' => 'WeFengYunModelswxArticle']);
            $builder->join('WeFengYunModelswxArticleUpdate','u.article_id = a.id','u');
            $builder->columns(array('a.article_title'));
            switch ($filter) {
                case 'hot':
                    $builder->orderBy('u.article_real_read desc');
                    break;
                case 'new':
                    $builder->orderBy('a.article_ctime desc');
                    break;
                default:
                    return '';
                    break;
            }
            $builder->limit($limit);
            print_r($bulider->getQuery());die;
            return $builder->getQuery()->execute();

        或者

    $params = array(
       'models'     => array('Users'),
       'columns'    => array('id', 'name', 'status'),
       'conditions' => array(
           array(
               "created > :min: AND created < :max:",
               array("min" => '2013-01-01',   'max' => '2014-01-01'),
               array("min" => PDO::PARAM_STR, 'max' => PDO::PARAM_STR),
           ),
       ),
       // or 'conditions' => "created > '2013-01-01' AND created < '2014-01-01'",
       'group'      => array('id', 'name'),
       'having'     => "name = 'Kamil'",
       'order'      => array('name', 'id'),
       'limit'      => 20,
       'offset'     => 20,
       // or 'limit' => array(20, 20),
    );
    $queryBuilder = new PhalconMvcModelQueryBuilder($params);

      4.使用phql查询:使用sql的形式,虽然比较麻烦,但2.3的查询都会转换为phql,因此phql相对性能好

    $phql = 'SELECT
                a.article_title
                FROM WeFengYunModelswxArticle a
                LEFT JOIN WeFengYunModelswxArticleUpdate u
                ON a.id = u.article_id
                 '.$this->applyFilter($filter).'
                LIMIT '.$limit;
            print_r($this->ModelsManager->executeQuery($phql));die;
            return $this->ModelsManager->executeQuery($phql);

      5.使用原生查询,未测试

  • 相关阅读:
    Linux中gdb 查看core堆栈信息
    爱因斯坦名言
    Symbian OS 源码下载方式
    Windows 2003+VS2005+SP1 “无法使用此产品的安装源,请确认安装源存在,并且您可以访问它”的错误
    Visual Studio 2012 Ultimate RTM 序列号
    STL容器erase的使用陷阱
    C++ 迭代器失效
    C++ 类的静态成员详细讲解[静态成员变量链接错误]
    Ubuntu 启动黑屏解决
    android中KSOAP2中的anytype{}问题
  • 原文地址:https://www.cnblogs.com/j-king/p/4554275.html
Copyright © 2011-2022 走看看