YII进行数据查询及类库追踪

模型进行数据操作,继承自CActiveRecord (活跃记录)

AR数据库向上的封装,AR通过OOP面向对象方式操作数据库。AR需要最终转变为具体的sql语句,通过一个中间类(criteria标准)协助转为的具体sql语句。find、findAll
就是转化为这个类的一些属性

文件路径AR  : \framework\db\ar\CActiveRecord.php

可以看到很多方法

打开findAll函数进行类库追踪到  这个\framework\db\schema\CDbCommandBuilder.php 文件

再次进行追踪到这个文件\framework\db\schema\CDbCriteria.php:

为什么这样追踪:

1

2

3

常用查询方法

下面是三种查询方式

    function actionCeshi(){
        $model = Goods::model();

        //$infos = $model -> findAllByPk(10);
        //$infos = $model -> findAllByPk(array(1,5,12));
        //////////////////////////////////////////////////////////////////////////////////////////

        //findAll($condition,$param)
        //$condition  就是sql语句的where条件
        //查询诺基亚手机并且价格大于500元
        //$infos = $model -> findAll("goods_name like '诺%' and goods_price>500");
        //为了避免sql注入的安全问题,sql语句里边最好不要直接写条件信息
        //$infos = $model -> findAll("goods_name like :name and goods_price>:price",array(':name'=>'诺%',':price'=>500));
         //////////////////////////////////////////////////////////////////////////////////////////

        //有的时候我们查询信息,
        //想要查询具体的"字段" select
        //想要查询具体的"条件" condition
        //想要查询具体的"排序" order
        //想要查询具体的"分组" group
        //想要查询具体的"限制" limit
        //想要查询具体的"偏移量" offset

        //$infos = $model -> findAll(array(
        //    'select'=>'goods_name,goods_price',
        //    'condition'=>"goods_name like '诺%'",
        //    'order'=>'goods_price desc',
        //    'limit'=>3,
        //    'offset'=>6,
        //));

         //////////////////////////////////////////////////////////////////////////////////////////
        //通过criteria实现信息的查询
        $criteria = new CDbCriteria();
        $criteria -> select = "goods_name,goods_price";
        $criteria -> condition = "goods_name like '摩%'";
        //$criteria -> limit = 6;
        $criteria -> order = "goods_price";
        $infos = $model -> findAll($criteria);

        $this ->renderPartial('show',array('goods_infos'=>$infos));

        //save()方法执行update或insert
        //$model -> save();
    }
时间: 2024-10-17 18:00:54

YII进行数据查询及类库追踪的相关文章

yii中数据的"增删改查"相关工作!(此文比较乱,需细看)

使用findByPk()根据数据表主键查询的是对象,不需要使用foreach()循环出来 但是使用findall()和find()查询的是对象类型的数组需要使用foreach()循环出来 ======================================= public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCommand($sql); $query = $r

Yii2 数据查询

数据查询 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据: User::find()->where(['name' => '小伙儿'])->all(); 此方法返回 ['name' => '小

MongoDB数据查询

启动MongoDB:sudo service mongodb start,mongo 经测试,键可加引号也可不加,但是值一般要加引号,数值类型除外 MongoDB区分大小写,命名通常采用驼峰式命名法 MongoDB在使用数据库,插入集合等情况下,若数据库/集合不存在将自动创建 数据查询find() db.<集合名>.find({<键名>:<值>,...}) 格式化结果集:后加.pretty()即db.<CollectionName>.find({key:'v

用python操作mysql数据库(之数据查询结果返回字典类型)

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb #建立连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db') cur = conn.cursor(MySQLdb.cursors.DictCursor) #建立游标时,加上"MySQLdb.cursors.DictCursor",让数据查询结果返回字

SharePoint服务器端对象模型 之 使用CAML进展数据查询

SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大量存在着各种各样的查询,比如针对回收站的SPRecycleBinQuery.针对审计的SPAuditQuery.针对变更的SPChangeQuery等等,不过这些查询在实际项目中使用到的频率并不是很高.本章节还是着重介绍列表查询功能.

6、SQL Server 数据查询

一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的基本结构 [WITH<common_tale_expression>] SELECT select_list [INTO new_table_name] [FROM table_source][where search_condition] [GROUP BY group_by_expressio

数据库 简单的数据查询

简单的数据查询 1.查询的基本结构: select[distinct] */列名 from table 表名 [where condition] [order by] 2.投影的操作:指定查询结果中能够显示的列 语法:select 列名列表 from 表名; (1):选择多列查询,列名之间用“,”隔开 (2):单列时,只单个. (3):若选择所有列,则用*代替. 3.表名前缀:本列无多大意义,但在复杂的多表查询的情况下,很有用. 语法:select 列名表名 from 表名; 4.列别名(as)

Hibernate数据查询(转)

Hibernate Query Language(HQL)Criteria QueryNative SQL下面对其分别进行解释Hibernate Query Language:HQL提供了是十分强大的功能,它是针对持久化对象,用取得对象,而不进行update,delete和insert等操作.而且HQL是面向对象的,具备继承,多态和关联等特性.from子句:from子句是最简单的HQL,例如from Student,也可以写成 select s from Student s.它简单的返回Stud

我们曾经心碎的数据库之 数据查询基础

第九章  数据查询基础 1.记录集: 记录集是符合查询条件的记录组织在一起的类似于表结构的查询结果 2.使用select语句进行查询 语法: select 列名 from 表名 where 查询条件表达式 order by 排序的列名 [asc或desc] 1.查询所有的数据行和列 select * from students 2.查询部分行和列 select 列名  from 表名 where  查询条件表达式 3.在查询中使用列的别名 select scode as 学生编号,sname a