phalco框架的查询

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

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

    缺陷:条件有限

    参数列表:

参数 描述 举例
conditions 查询操作的搜索条件。用于提取只有那些满足指定条件的记录。默认情况下 Phalcon\Mvc\Model 假定第一个参数就是查询条件。 “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 通过这个选项, Phalcon\Mvc\Model 读取最新的可用数据,并且为读到的每条记录设置独占锁。 “for_update” => true
shared_lock 通过这个选项, Phalcon\Mvc\Model 读取最新的可用数据,并且为读到的每条记录设置共享锁。 “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('WeFengYun\Models\wxArticleUpdate','u.article_id = WeFengYun\Models\wxArticle.id','u');
        $builder->columns(array('WeFengYun\Models\wxArticle.article_title'));
        switch ($filter) {
            case 'hot':
                $builder->orderBy('u.article_real_read desc');
                break;
            case 'new':
                $builder->orderBy('WeFengYun\Models\wxArticle.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' => 'WeFengYun\Models\wxArticle']);
        $builder->join('WeFengYun\Models\wxArticleUpdate','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 Phalcon\Mvc\Model\Query\Builder($params);
复制代码

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

复制代码
$phql = 'SELECT
            a.article_title
            FROM WeFengYun\Models\wxArticle a
            LEFT JOIN WeFengYun\Models\wxArticleUpdate u
            ON a.id = u.article_id
             '.$this->applyFilter($filter).'
            LIMIT '.$limit;
        print_r($this->ModelsManager->executeQuery($phql));die;
        return $this->ModelsManager->executeQuery($phql);
复制代码
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Phalcon是一个开放源码的、全堆栈的PHP5框架,使用C扩展编写,专门为高性能优化,无需使用C语言,所有函数都以PHP类的方式。PhalconPHP 3.4.0 更新日志:2018-05-28添加Phalcon\Mvc\Router::attach直接将路由对象添加到路由器#13326中;增加了侦听请求的功能:beforeAuthorizationResolve和request:afterAuthorizationResolve事件,这种能力可以使用自定义授权解析器#13327;在Phalcon\Mvc\Model中添加呼叫事件afterFetch:刷新#12220;添加Phalcon\Http\Response::getReasonPhrase以从状态报头#13314中检索原因词组;添加Phalcon\Loader::setFileCheckingCallback来设置内部文件存在解析器#13360;增加了为Phalcon\Mvc\Collection::aggregate#12302传递聚合选项的功能;添加Phalcon\Crypt::setHashAlgo来设置用于计算消息摘要的散列算法的名称#13379;添加Phalcon\Crypt::getHashAlgo以获得用于计算消息摘要的散列算法的名称#13379;添加Phalcon\Crypt::useSigning来设置是否必须使用计算消息摘要(注意:此功能将在Phalcon4.0.0中默认启用)#13379;添加了Phalcon\Crypt::getAvailableHashAlgos以获得适用于计算消息摘要的注册散列算法列表#13379;添加了Phalcon\Crypt::__构造,现在可以在对象构造中设置密码,并且可以启用计算消息摘要,而无需明确调用setCipher或useSigning#13379;添加了Phalcon\Crypt\Mismatch,在Phalcon\Crypt中抛出的异常将使用这个类#13379;添加Phalcon\Http\Cookie::setSignKey来设置用于生成消息认证代码的符号密钥(例如消息摘要);添加了Phalcon\Http\Response\Cookies::setSignKey来设置用于生成消息认证代码的符号密钥(例如消息摘要);更改了Phalcon\Crypt::setCipher,以便在设置密码算法期间重新配置IV长度;更改了Phalcon\Crypt::setCipher,以便在密码不可用的情况下抛出Phalcon\Crypt\Exception;修复Phalcon\Debug\Dump::output的回归(#13308)以正确使用详细模式#13315;修正Phalcon\Mvc\Model\Query\Builder::having和Phalcon\Mvc\Model\Query\Builder::在哪里正确合并绑定类型#11487;修正Phalcon\Mvc\Model::setSnapshotData以正确设置旧快照;超级全球不存在时不要抛出异常#13252,#13254,#12918。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值