Ar model 查询

参照表:
CREATE TABLE tbl_user
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL,
profile TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE tbl_post
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
content TEXT NOT NULL,
tags TEXT,
status INTEGER NOT NULL,
create_time INTEGER,
update_time INTEGER,
author_id INTEGER NOT NULL,
CONSTRAINT FK_post_author FOREIGN KEY (author_id)
REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; $condition = 'postID=:postID';
$params = array(':postID'=>10); 一、单行所有列查询
① $post = Post::model()->find($condition,$params); ②
$post = Post::model()->findByPk($postID,$condition,$params); ③
$post = Post::model()->findByAttributes($attributes,$condition,$params);
例如:Post::model()->findByAttributes(array('title'=>'abc')) ④
$post = Post::model()->findBySql($sql,$params); 二、单行选择列查询

$criteria = new CDbCriteria;
$criteria->select = 'title'; //现在所需要的列
$criteria->condition = 'postID=:postID';
$criteria->params = array(':postID'=>10);
$post = Post::model()->find($criteria);

$post=Post::model()->find(array(
'select' => 'title',
'condition' => 'postID=:postID',
'params' => array(':postID'=>10),
)); 三、多行所有列查询

$post = Post::model()->findAll($condition,$params)

$post = Post::model()->findAllByPk($postIDs,$condition,$params);

$post = Post::model()->findAllByAttributes($attributes,$condition,$params);

$post = Post::model()->findAllBySql($sql,$params); 四、多行选择列(参照与单行选择列查询) 五、查询行数
$count = Post::model()->count($condition,$params) 六、
$exists=Post::model()->exists($condition,$params) 七、联合查询
关系:
BELONGS_TO: A和B的关系是一对多,那么B属于A 例如:Post属于User HAS_MANY:A和B之间的关系是一对多,那么A有多个B 例如:User有多个Post
HAS_ONE: 这是HAS_MANY的一种特殊情况,A至多有一个B
MANY_MANY: 这个对应多对多的情况,在AR里会将多对多以BELONGS_TO和HAS_MANY的组合来解释
例如:
'VarName'=>array('RelationType','ClassName','ForeignKey', ...additional options)
class User extends CActiveRecord {
public function relations() {
return array(
'posts'=>array(
self::HAS_MANY,
'Post',
'authorID',
'order'=>'posts.create_time DESC',
),
'profile'=>array(
self::HAS_ONE,
'Profile',
'ownerID'
),
);
}
} User::model()->with('posts')->findAll();
User::model()->with(array(‘posts, profile’))->findAll(); 八、增改删除 ① 单条记录操作
$now = time();
$model = new CBlocks();
$model = $model->findByPk($id);(更改)
$request = Yii::app()->request;
$blockName = $request->getPost('block_name');
$model->setAttribute('block_name',$blockName);
(或者 $model-> block_name = $blockName; 直接调用公共成员变量)
$model->setAttribute('expired_time', $request->getPost('expired_time'));
$model->setAttribute('create_time', $now);
$model->setAttribute('update_time', $now);
$model->save() 或者:$model->setAttributes($_REQUEST); 修改:CBlocks::model()->updateByPk($pk,$attributes,$condition,$params); CBlocks()::model()->findByPk($id) ->delete();
或者:CBlocks::model()->deleteByPk($pk,$condition,$params); ② 多条记录操作 Post::model()->updateAll($attributes,$condition,$params);
Post::model()->deleteAll($condition,$params); Pdo model 查询 一、关联查询
$joinTableName = $nlogNews->tableName();
$connection = Yii::app()->db->createCommand();
$selectObj = $connection->select("a.contentid,a.title")
->from($this->tableName().' a')
->join("$joinTableName b", "a.contentid = b.contentid")
->where("day = :day", array(':day' => date('Ymd'))); if (! empty($catid) ) {
$selectObj->andWhere('catid = :catid', array(':catid' => $catid));
} $return = $selectObj->order("hit DESC")
->limit($limit)
->queryAll();
单行:
$selectObj->queryRow (); 单列:
$selectObj->queryColumn ();

Yii Ar model 查询的更多相关文章

  1. Yii AR Model CRUD数据库操作

    Yii AR很好很强大,但刚开始不知道怎么使用,可以先看下官方文档 官方文档:http://www.yiichina.com/guide/database.ar 下面是我对AR的一些理解 对于一个Mo ...

  2. YII AR查询方法

    ActiveRecord类文档:http://www.yiiframework.com/doc/guide/1.1/en/database.ar 对于一个Model Post 有如下的4中查询方法,返 ...

  3. Django的model查询操作 与 查询性能优化

    Django的model查询操作 与 查询性能优化 1 如何 在做ORM查询时 查看SQl的执行情况 (1) 最底层的 django.db.connection 在 django shell 中使用 ...

  4. Thinkphp5.0 的使用模型Model查询

    Thinkphp5.0 的使用模型Model查询 一.查询多条记录 获取多个数据可以使用:select()方法和all()方法. 示例一:使用all()方法. //(1)筛选条件使用闭包函数 $res ...

  5. Laravel Model查询结果的3种存储格式内存占用对比

    PHP Laravel框架支持Model查询数据后可以有多种方式返回数据,对新手会造成一些困扰,比如数组Model对象.集合.纯数组 今天从内存占用的角度对比一下3种数据返回方式 按数组Model对象 ...

  6. 使用yii AR 完成单个表的CURD操作

    什么是AR(ActiveRecord) Active Record (活动记录,以下简称AR)提供了一个面向对象的接口, 用以访问数据库中的数据.一个 AR 类关联一张数据表, 每个 AR 对象对应表 ...

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

    一般处理过程: 模型进行数据操作,继承自CActiveRecord (活跃记录) AR数据库向上的封装.AR通过OOP面向对象方式操作数据库.AR须要终于转变为详细的sql语句.通过一个中间类(cri ...

  8. php yii多表查询

    一个Company记录可以对应多个CompanyUser纪录Company表: [['id', 'nature_id', 'scale_id', 'pro_id', 'created_at', 'up ...

  9. Yii Active Record 查询结果转化成数组

    使用Yii 的Active Record 来获取查询结果的时候,返回的结果集是一个对象类型的,有时候为了数据处理的方便希望能够转成数组返回.比如下面的方法: // 查找满足指定条件的结果中的第一行 $ ...

随机推荐

  1. Linux内核设计与实现 总结笔记(第五章)系统调用

    系统调用 内核提供了用户进程和内核交互的接口,使得应用程序可以受限制的访问硬件设备. 提供这些接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 一.内核通信 系统调用在用户空间进程和硬件设备之间 ...

  2. form表单action带参数传递

    form表单action带参数传递function submit(){  var u = document.forms[0].elements["user"].value;  do ...

  3. 刷leetcode之路

    写的不是很好,仅记录自己所写的,仅供参考. 第七题: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = ...

  4. pom里引入lib下的包后编译报 package com.sun.crypto.provider does not exist问题解决

    最近正在迭代开发的一个项目编译安装时出现报“package com.sun.crypto.provider does not exist”的错误,由于本人能力水平有限,也是第一次遇到该问题,来来回回折 ...

  5. 云计算openstack核心组件——keystone身份认证服务

    一.Keystone介绍:       keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户 ...

  6. ECMAScript 2015 迭代器协议:实现自定义迭代器

    迭代器协议定义了一种标准的方式来产生一个有限或无限序列的值,并且当所有的值都已经被迭代后,就会有一个默认的返回值. 当一个对象只有满足下述条件才会被认为是一个迭代器:它实现了一个 next() 的方法 ...

  7. 【ABAP系列】SAP ABAP 给初学者-解读function函数的export和import等参数

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 给初学者-解读 ...

  8. C#将字符串Split()成数组

    string str="aaajbbbjccc";string[] sArray=str.Split('j');foreach(string i in sArray) Respon ...

  9. 求bit中1的个数有几种做法

    原文 求bit中1的个数有几种做法: - x & (x - 1) - Hamming weight的经典求法,基于树状累加:http://en.wikipedia.org/wiki/Hammi ...

  10. [Linux] 021 RPM 包的安装、升级与卸载

    1. 包全名与包名包全名 包全名:操作的包是没有安装的软件包 使用包全名.而且要注意路径包名 包名:操作已经安装的软件包时,使用 是搜索 /var/lib/rpm/ 中的数 2. 安装 $ rpm - ...