Yii資料庫操作增刪改查-[增加\查詢\更新\刪除 AR模式]
本人小菜鳥一隻,為了自我學習和交流PHP(jquery,linux,lamp,shell,javascript,伺服器)等一系列的知識,小菜鳥建立了一個群。希望光臨本部落格的人可以進來交流。尋求共同發展。搭建平臺。
本人部落格也有許多的技術文件,希望可以為你提供一些幫助。
QQ群: 191848169 QQ:450225664
在Yii的開發中常常需要去使用Yii的增刪改查方法,這些方法又可以多次變化和組合,帶來全方位的實現對資料庫的處理,下面對這些方法做一些簡單的整理和梳理,有遺漏或是BUG,敬請指出。灰常感謝!!!
一、查詢資料集合
1
2
3
4 |
//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 = new CDbCriteria;
$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 ( $rows as
$k => $v ){
echo $v [ 'add_time' ];
}
//事務的基本結構(多表更新插入操作請使用事務處理)
$dbTrans = Yii::app()->db->beginTransaction();
try {
$post = new
Post;
$post -> 'title' = 'Hello
dodobook!!!' ;
if (! $post ->save()) throw new Exception( "Error
Processing Request" , 1);
$dbTrans ->commit();
// $this->_end(0,'新增成功!!!');
} catch (Exception $e ){
$dbTrans ->rollback();
// $this->_end($e->getCode(),$e->getMessage());
}
|
相關推薦
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,根