1. 程式人生 > >Yii資料庫操作增刪改查-[增加\查詢\更新\刪除 AR模式]

Yii資料庫操作增刪改查-[增加\查詢\更新\刪除 AR模式]

本人小菜鳥一隻,為了自我學習和交流PHP(jquery,linux,lamp,shell,javascript,伺服器)等一系列的知識,小菜鳥建立了一個群。希望光臨本部落格的人可以進來交流。尋求共同發展。搭建平臺。

本人部落格也有許多的技術文件,希望可以為你提供一些幫助。

QQ群:   191848169               QQ:450225664


在Yii的開發中常常需要去使用Yii的增刪改查方法,這些方法又可以多次變化和組合,帶來全方位的實現對資料庫的處理,下面對這些方法做一些簡單的整理和梳理,有遺漏或是BUG,敬請指出。灰常感謝!!!

一、查詢資料集合

1 2 3 4
5 6 7 8 9 10 11 12 13 14 15 16 17 18
//1.該方法是根據一個條件查詢一個集合 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); $infoArr= NewsList::model()->findAll("status = '1' ORDER BY id DESC limit 10 "); //2. findAllByPk(該方法是根據主鍵查詢一個集合,可以使用多個主鍵)
$admin=Admin::model()->findAllByPk($postIDs,$condition,$params); $admin=Admin::model()->findAllByPk($id,"name like :name and age=:age",array(':name'=>$name,'age'=>$age)); $admin=Admin::model()->findAllByPk(array(1,2)); //3.findAllByAttributes (該方法是根據條件查詢一個集合,可以是多個條件,把條件放到數組裡面) $admin
=Admin::model()->findAllByAttributes($attributes,$condition,$params);
$admin=Admin::model()->findAllByAttributes(array('username'=>'admin')); //4.findAllBySql (該方法是根據SQL語句查詢一個數組) $admin=Admin::model()->findAllBySql($sql,$params); $admin=Admin::model()->findAllBySql("select * from admin where username like :name",array(':name'=>'%ad%'));

二、查詢物件的方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 //根據主鍵查詢出一個物件,如:findByPk(1); $admin=Admin::model()->findByPk($postID,$condition,$params); $admin=Admin::model()->findByPk(1); //根據一個條件查詢出一組資料,可能是多個,但是他只返回第一行資料 $row=Admin::model()->find($condition,$params); $row=Admin::model()->find('username=:name',array(':name'=>'admin')); //該方法是根據條件查詢一組資料,可以是多個條件,把條件放到數組裡面,查詢的也是第一條資料 $admin=Admin::model()->findByAttributes($attributes,$condition,$params); $admin=Admin::model()->findByAttributes(array('username'=>'admin')); //該方法是根據SQL語句查詢一組資料,他查詢的也是第一條資料 $admin=Admin::model()->findBySql($sql,$params); $admin=Admin::model()->findBySql("select * from admin where username=:name",array(':name'=>'admin')); //拼一個獲得SQL的方法,在根據find查詢出一個物件  $criteria=newCDbCriteria;  $criteria->select='username';// only select the 'title' column  $criteria->condition='username=:username';    //請注意,這是一個查詢的條件,且只有一個查詢條件.多條件用addCondition $criteria->params=array(":username=>'admin'"); $criteria->order ="id DESC"; $criteria->limit ="3"; $post=Post::model()->find($criteria);// $params isnot needed  //多條件查詢的語句 $criteria=new CDbCriteria;      $criteria->addCondition("id=1");//查詢條件,即where id = 1  $criteria->addInCondition('id',array(1,2,3,4,5));//代表where id IN (1,2,3,4,5,);  $criteria->addNotInCondition('id',array(1,2,3,4,5));//與上面正好相法,是NOT IN  $criteria->addCondition('id=1','OR');//這是OR條件,多個條件的時候,該條件是OR而非AND  $criteria->addSearchCondition('name','分類');//搜尋條件,其實代表了。。where name like '%分類%'  $criteria->addBetweenCondition('id', 1, 4);//between 1 and 4 $criteria->compare('id', 1);   //這個方法比較特殊,他會根據你的引數自動處理成addCondition或者addInCondition. $criteria->compare('id',array(1,2,3));  //即如果第二個引數是陣列就會呼叫addInCondition  $criteria->select ='id,parentid,name';//代表了要查詢的欄位,預設select='*';  $criteria->join ='xxx';//連線表  $criteria->with ='xxx';//呼叫relations   $criteria->limit = 10;   //取1條資料,如果小於0,則不作處理  $criteria->offset = 1;  //兩條合併起來,則表示 limit 10 offset 1,或者代表了。limit 1,10  $criteria->order ='xxx DESC,XXX ASC';//排序條件  $criteria->group ='group 條件' $criteria->having ='having 條件 ' $criteria->distinct = FALSE;//是否唯一查詢

三、查詢個數,判斷查詢是否有結果

1 2 3 4 5 6 7 8 9 10 11 //該方法是根據一個條件查詢一個集合有多少條記錄,返回一個int型數字 $n=Post::model()->count($condition,$params); $n=Post::model()->count("username=:name",array(":name"=>$username)); //該方法是根據SQL語句查詢一個集合有多少條記錄,返回一個int型數字 $n=Post::model()->countBySql($sql,$params); $n=Post::model()->countBySql("select * from admin where username=:name",array(':name'=>'admin')); //該方法是根據一個條件查詢查詢得到的陣列有沒有資料,如果有資料返回一個true,否則沒有找到 $exists=Post::model()->exists($condition,$params); $exists=Post::model()->exists("name=:name",array(":name"=>$username));

四、新增的方法

1 2 3 4 $admin=new Admin;        $admin->username =$username; $admin->password =$password; if($admin->save() > 0){echo"新增成功"; }else{echo"新增失敗"; }

五、修改的方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Post::model()->updateAll($attributes,$condition,$params); $count=Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1')); if($count> 0){echo "修改成功"; }else{echo"修改失敗"; } $rt= PostList::model()->updateAll(array('status'=>'1'),'staff_id=:staff AND host_id=:host',array(':staff'=>$staff_id,':host'=>$host_id)); //$pk主鍵,可以是一個也可以是一個集合,$attributes是要修改的欄位的集合,$condition條件,$params傳入的值 Post::model()->updateByPk($pk,$attributes,$condition,$params); $count=Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin')); $count=Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin')); if($count>0){echo"修改成功"; }else{echo"修改失敗"; } Post::model()->updateCounters($counters,$condition,$params); $count=Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin')); if($count> 0){echo "修改成功"; }else{echo"修改失敗"; } //array('status'=>1)代表資料庫中的admin表根據條件username='admin',查詢出的所有結果status欄位都自加1

六、刪除的方法

1 2 3 4 5 6 7 8 9 10 11 //deleteAll Post::model()->deleteAll($condition,$params); $count= Admin::model()->deleteAll('username=:name and password=:pass',array(':name'=>'admin',':pass'=>'admin')); $count= Admin::model()->deleteAll('id in("1,2,3")');//刪除id為這些的資料 if($count>0){echo"刪除成功"; }else{echo"刪除失敗"; } //deleteByPk Post::model()->deleteByPk($pk,$condition,$params); $count= Admin::model()->deleteByPk(1); $count=Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin')); if($count>0){echo"刪除成功"; }else{echo"刪除失敗"; }

七、更多方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //createCommand(執行原生的SQL語句) $sql="SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id"; $rows=Yii::app()->db->createCommand($sql)->query(); foreach($rowsas $k => $v){ echo$v['add_time']; } //事務的基本結構(多表更新插入操作請使用事務處理) $dbTrans= Yii::app()->db->beginTransaction(); try{ $post=new Post; $post->'title'='Hello dodobook!!!'; if(!$post->save())thrownewException("Error Processing Request", 1); $dbTrans->commit(); //  $this->_end(0,'新增成功!!!'); }catch(Exception$e){ $dbTrans->rollback(); //  $this->_end($e->getCode(),$e->getMessage()); }

QQ群交流  希望你們的加入:191848169

相關推薦

Yii資料庫操作刪改-[增加\查\更\刪 AR模式]

本人小菜鳥一隻,為了自我學習和交流PHP(jquery,linux,lamp,shell,javascript,伺服器)等一系列的知識,小菜鳥建立了一個群。希望光臨本部落格的人可以進來交流。尋求共同

flask連線mysql資料庫操作刪改的簡單封裝函式

Y17 1、建立python資料夾,命名為app,建立並返回一個WGSI應用程式物件 from flask import Flask app = Flask(__name__) # 定義函式封裝路由配置 def path(route, fun, *, methods=['GE

mySql資料庫操作 刪改

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES

資料庫操作--刪改

一、資料操作語句 DDL:(資料定義語言)——定義資料的結構(列)    CREATE / DROP / ALTER / TRUNCATEDML:(資料操作語言)——操作資料的記錄行    INSERT / DELETE / UPDATE DQL:(資料查詢語言)——對資料

spring框架學習之--資料庫操作刪改

基於spring的NamedParameterJdbcTemplate操作資料庫 首先在 resources 資料夾下新增資料庫配置檔案jdbc.properties 配置常用的資料庫資訊 1 consult.jdbc.driverClassName=com.mysql.jdbc.Dr

用sql語句操作mysql資料庫刪改(命令提示符和引入mysql模組兩種方式)

1:命令提示符方法: 我的 :mysql.sql檔案。當然首先得開啟本地伺服器(我的是xampp); 少了一步了:首先要在進入mysql -h127.0.0.1 -u root -p;後引入我的mysql.sql 檔案; 我用的是 source方法:  source

$Django 多表操作(刪改,基於雙下劃線的查詢)

 1 建立多表模型(詳情見程式碼)  #用了OneToOneField和ForeignKey,模型表的欄位,後面會自定加_id class Zuozhe (models.Model): id = models.AutoField (primary_key=True)

lua 連線mysql資料庫實現刪改操作(linux下示例)

(1)linux下連線資料庫: mysql -u root -p,-u 指定登入使用者,-p 指定密碼。 [[email protected]18 develop]$ mysql -u root -p Enter password: Welcome to the MySQ

Python使用pymql操作資料庫刪改例項

Python使用pymql操作資料庫的增刪改查例項 資料庫: 一、新增: import pymysql # 匯入pymysql包 conn=pymysql.connect(host='localhost',user='root',passwd='123',db='db_good

JDBC操作----執行資料庫刪改 操作

      資料庫連線成功後,即可對資料庫進行具體的操作 一、執行資料庫資料的插入操作        使用PreparedStatement介面執行資料庫資料的插入操作,程式碼如下 : import java.sql.

shell指令碼實現mysql資料庫刪改操作

一、shell指令碼實現mysql操作 通用的shell語句如下: mysql -hHOSTNAME−P{HOSTNAME} -PHOSTNAME−P{PORT} -uUSERNAME−p{USERNAME} -pUSERNAME−p{PASSWORD} -

mysql學習【第3篇】:資料庫刪改操作 資料庫之表操作,資料操作

資料庫之表操作,資料操作 注意的幾點:1.如果你在cmd中書命令的時候,輸入錯了就用\c跳出   2.\s檢視配置資訊

hibernate操作資料庫刪改

建立一個實體類 public class User { private Integer id; private String user_name; private String real_name; private String user

在SpringBoot下用java操作MongoDB資料庫刪改

首先我們需要建立一個SpringBoot工程,在IDEA中有快捷的建立方式。new -> project -> Spring Initializr 根據需要一路next下去即可第二步,給application.properties新增MongoDB配置#Mongo

Java通過mongo-java-driver-3.0+操作mongodb資料庫刪改

本文以mongo-java-driver-3.5.0.jar為例 1 需要的jar包:https://pan.baidu.com/s/1jI3kB9W 密碼:79hv mongo-java-driver-3.5.0.jar junit-4.9.jar 2

Laravel 資料庫例項教程 —— 使用查詢構建器對資料庫進行刪改

上一節我們講了如何使用DB門面對資料庫進行原生查詢,這一節我們使用另外一種方式實現對資料庫的增刪改查——查詢構建器(Query Builder)。 獲取查詢構建器很簡單,還是要依賴DB門面,我們使用DB門面的table方法,傳入表名,即可獲取該表的查詢構建器: $us

ASP.NET 使用類對資料庫進行刪改操作

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Dat

JDBC實現資料庫刪改操作例項

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.PreparedStatement

HBase資料庫的基本操作刪改

# 進入hbase命令列,hbase需要在環境變數路徑中 >hbase shell 表操作 # 顯示hbase中的表 > list # 建立user表,包含info、data兩個列族 > create 'user', 'info', 'data' #

java實現hbase資料庫刪改操作API)

操作環境:    java版本:    jdk 1.7以上    hbase 版本:1.2.x    hadoop版本:2.6.0以上 實現功能: 1,建立指定表        2,刪除指定表       3,根據表名,行鍵,列族,列描述符,值插入資料       4,根