国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php框架 YII Yii2.0 資料庫(kù)操作增刪改查詳解

Yii2.0 資料庫(kù)操作增刪改查詳解

Nov 01, 2019 pm 04:51 PM
yii 資料庫(kù)

Yii2.0 資料庫(kù)操作增刪改查詳解

1.簡(jiǎn)單查詢:

one(): 根據(jù)查詢結(jié)果返回查詢的第一條記錄。
all(): 根據(jù)查詢結(jié)果返回所有記錄。
count(): 返回記錄的數(shù)量。
sum(): 返回指定列的總數(shù)。
average(): 返回指定列的平均值。
min(): 返回指定列的最小值。
max(): 返回指定列的最大值。
scalar(): 返回查詢結(jié)果的第一行中的第一列的值。
column(): 返回查詢結(jié)果中的第一列的值。
exists(): 返回一個(gè)值,該值指示查詢結(jié)果是否有數(shù)據(jù)。
where(): 添加查詢條件
with(): 該查詢應(yīng)執(zhí)行的關(guān)系列表。
indexBy(): 根據(jù)索引的列的名稱查詢結(jié)果。
asArray(): 以數(shù)組的形式返回每條記錄。

#應(yīng)用程式實(shí)例:

Customer::find()->one();    此方法返回一條數(shù)據(jù);
Customer::find()->all();    此方法返回所有數(shù)據(jù);
Customer::find()->count();    此方法返回記錄的數(shù)量;
Customer::find()->average();    此方法返回指定列的平均值;
Customer::find()->min();    此方法返回指定列的最小值 ;
Customer::find()->max();    此方法返回指定列的最大值 ;
Customer::find()->scalar();    此方法返回值的第一行第一列的查詢結(jié)果;
Customer::find()->column();    此方法返回查詢結(jié)果中的第一列的值;
Customer::find()->exists();    此方法返回一個(gè)值指示是否包含查詢結(jié)果的數(shù)據(jù)行;
Customer::find()->asArray()->one();    以數(shù)組形式返回一條數(shù)據(jù);
Customer::find()->asArray()->all();    以數(shù)組形式返回所有數(shù)據(jù);
Customer::find()->where($condition)->asArray()->one();    根據(jù)條件以數(shù)組形式返回一條數(shù)據(jù);
Customer::find()->where($condition)->asArray()->all();    根據(jù)條件以數(shù)組形式返回所有數(shù)據(jù);
Customer::find()->where($condition)->asArray()->orderBy('id DESC')->all();    根據(jù)條件以數(shù)組形式返回所有數(shù)據(jù),并根據(jù)ID倒序;

2.關(guān)聯(lián)查詢:

ActiveRecord::hasOne():返回對(duì)應(yīng)關(guān)系的單條記錄
ActiveRecord::hasMany():返回對(duì)應(yīng)關(guān)系的多條記錄

應(yīng)用實(shí)例:

//客戶表Model:CustomerModel 
//訂單表Model:OrdersModel
//國(guó)家表Model:CountrysModel
//首先要建立表與表之間的關(guān)系 
//在CustomerModel中添加與訂單的關(guān)系
      
Class CustomerModel extends yiidbActiveRecord
{
    ...
    
    public function getOrders()
    {
        //客戶和訂單是一對(duì)多的關(guān)系所以用hasMany
        //此處OrdersModel在CustomerModel頂部別忘了加對(duì)應(yīng)的命名空間
        //id對(duì)應(yīng)的是OrdersModel的id字段,order_id對(duì)應(yīng)CustomerModel的order_id字段
        return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']);
    }
     
    public function getCountry()
    {
        //客戶和國(guó)家是一對(duì)一的關(guān)系所以用hasOne
        return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']);
    }
    ....
}
      
// 查詢客戶與他們的訂單和國(guó)家
CustomerModel::find()->with('orders', 'country')->all();

// 查詢客戶與他們的訂單和訂單的發(fā)貨地址
CustomerModel::find()->with('orders.address')->all();

// 查詢客戶與他們的國(guó)家和狀態(tài)為1的訂單
CustomerModel::find()->with([
    'orders' => function ($query) {
        $query->andWhere('status = 1');
        },
        'country',
])->all();

註:with中的orders對(duì)應(yīng)getOrders

常見(jiàn)問(wèn)題:

在查詢時(shí)加了- >select();如下,要加上order_id,即關(guān)聯(lián)的欄位(例如:order_id)例如要在select中,否則會(huì)報(bào)錯(cuò):undefined index order_id

// 查詢客戶與他們的訂單和國(guó)家
CustomerModel::find()->select('order_id')->with('orders', 'country')->all();
findOne()和findAll():

// 查詢key值為10的客戶
$customer = Customer::findOne(10);
$customer = Customer::find()->where(['id' => 10])->one();
// 查詢年齡為30,狀態(tài)值為1的客戶
$customer = Customer::findOne(['age' => 30, 'status' => 1]);
$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();
// 查詢key值為10的所有客戶
$customers = Customer::findAll(10);
$customers = Customer::find()->where(['id' => 10])->all();
// 查詢key值為10,11,12的客戶
$customers = Customer::findAll([10, 11, 12]);
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();
// 查詢年齡為30,狀態(tài)值為1的所有客戶
$customers = Customer::findAll(['age' => 30, 'status' => 1]);
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

where( )條件:

$customers = Customer::find()->where($cond)->all(); 

$cond寫法舉例:

// SQL: (type = 1) AND (status = 2).
$cond = ['type' => 1, 'status' => 2] 

// SQL:(id IN (1, 2, 3)) AND (status = 2)
$cond = ['id' => [1, 2, 3], 'status' => 2] 

//SQL:status IS NULL
$cond = ['status' => null]

[[and]]:將不同的條件組合在一起,使用範(fàn)例:

//SQL:`id=1 AND id=2`
$cond = ['and', 'id=1', 'id=2']

//SQL:`type=1 AND (id=1 OR id=2)`
$cond = ['and', 'type=1', ['or', 'id=1', 'id=2']]

[[or] ]:

//SQL:`(type IN (7, 8, 9) OR (id IN (1, 2, 3)))`
$cond = ['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]

[[not]]:

//SQL:`NOT (attribute IS NULL)`
$cond = ['not', ['attribute' => null]]

[[between]]: not between 用法相同

//SQL:`id BETWEEN 1 AND 10`
$cond = ['between', 'id', 1, 10]

[[in]]: not in 用法類似

//SQL:`id IN (1, 2, 3)`
$cond = ['in', 'id', [1, 2, 3]]

//IN條件也適用于多字段
$cond = ['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']]]

//也適用于內(nèi)嵌sql語(yǔ)句
$cond = ['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]

[[like]]:

//SQL:`name LIKE '%tester%'`
$cond = ['like', 'name', 'tester']

//SQL:`name LIKE '%test%' AND name LIKE '%sample%'`
$cond = ['like', 'name', ['test', 'sample']]

//SQL:`name LIKE '%tester'`
$cond = ['like', 'name', '%tester', false]

#[ [exists]]: not exists用法類似

//SQL:EXISTS (SELECT "id" FROM "users" WHERE "active"=1)
$cond = ['exists', (new Query())->select('id')->from('users')->where(['active' => 1])]
此外,您可以指定任意運(yùn)算符如下

//SQL:`id >= 10`
$cond = ['>=', 'id', 10]

//SQL:`id != 10`
$cond = ['!=', 'id', 10]

常用查詢:

// WHERE admin_id >= 10 LIMIT 0,10
 User::find()->select('*')->where(['>=', 'admin_id', 10])->offset(0)->limit(10)->all()
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`   
 $subQuery = (new Query())->select('COUNT(*)')->from('user');    
 $query = (new Query())->select(['id', 'count' => $subQuery])->from('post');
  // SELECT DISTINCT `user_id` ... 
 User::find()->select('user_id')->distinct();

更新:

//update();
//runValidation boolen 是否通過(guò)validate()校驗(yàn)字段 默認(rèn)為true 
//attributeNames array 需要更新的字段 
$model->update($runValidation , $attributeNames);  

//updateAll();
//update customer set status = 1 where status = 2
Customer::updateAll(['status' => 1], 'status = 2'); 

//update customer set status = 1 where status = 2 and uid = 1;
Customer::updateAll(['status' => 1], ['status'=> '2','uid'=>'1']);

刪除:

$model = Customer::findOne($id);
$model->delete();
$model->deleteAll(['id'=>1]);

批次插入:

Yii::$app->db->createCommand()->batchInsert(UserModel::tableName(), ['user_id','username'], [
    ['1','test1'],
    ['2','test2'],
    ['3','test3'],   
])->execute();

查看執(zhí)行sql##

//UserModel 
$query = UserModel::find()->where(['status'=>1]); 
echo $query->createCommand()->getRawSql();
推薦教學(xué):

YII教程
#

以上是Yii2.0 資料庫(kù)操作增刪改查詳解的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何在Windows/Linux上安裝MySQL 8.0? 如何在Windows/Linux上安裝MySQL 8.0? Jun 11, 2025 pm 03:25 PM

安裝MySQL8.0的關(guān)鍵在於按步驟操作並註意常見(jiàn)問(wèn)題。 Windows上推薦使用MSI安裝包,步驟包括下載安裝包、運(yùn)行安裝程序、選擇安裝類型、設(shè)置root密碼、啟用服務(wù)啟動(dòng),並註意端口衝突或手動(dòng)配置ZIP版;Linux(如Ubuntu)則通過(guò)apt安裝,步驟為更新源、安裝服務(wù)器、運(yùn)行安全腳本、檢查服務(wù)狀態(tài)及修改root認(rèn)證方式;無(wú)論哪個(gè)平臺(tái),都應(yīng)修改默認(rèn)密碼、創(chuàng)建普通用戶、設(shè)置防火牆、調(diào)整配置文件以優(yōu)化字符集等參數(shù),確保安全性與正常使用。

查看MongoDB中所有數(shù)據(jù)庫(kù)的方法 查看MongoDB中所有數(shù)據(jù)庫(kù)的方法 Jun 04, 2025 pm 10:42 PM

在MongoDB中查看所有數(shù)據(jù)庫(kù)的方法是輸入命令“showdbs”。 1.該命令只顯示非空數(shù)據(jù)庫(kù)。 2.可以通過(guò)“use”命令切換數(shù)據(jù)庫(kù)並插入數(shù)據(jù)使其顯示。 3.注意內(nèi)部數(shù)據(jù)庫(kù)如“l(fā)ocal”和“config”。 4.使用驅(qū)動(dòng)程序時(shí)需用“l(fā)istDatabases()”方法獲取詳細(xì)信息。 5.“db.stats()”命令可查看數(shù)據(jù)庫(kù)詳細(xì)統(tǒng)計(jì)信息。

YII開(kāi)發(fā)人員:高級(jí)與初中 YII開(kāi)發(fā)人員:高級(jí)與初中 May 24, 2025 am 12:10 AM

資深Yii開(kāi)發(fā)者與初級(jí)Yii開(kāi)發(fā)者的主要區(qū)別在於經(jīng)驗(yàn)、技能深度和思維方式。 1.資深開(kāi)發(fā)者關(guān)注性能優(yōu)化和代碼重構(gòu),使用Yii的緩存機(jī)制等提升應(yīng)用性能。 2.他們深入理解Yii的底層原理,參與架構(gòu)設(shè)計(jì)和技術(shù)決策,使用模塊化設(shè)計(jì)構(gòu)建靈活的應(yīng)用。 3.資深開(kāi)發(fā)者註重項(xiàng)目整體規(guī)劃和長(zhǎng)遠(yuǎn)發(fā)展,扮演導(dǎo)師角色。初級(jí)開(kāi)發(fā)者則需通過(guò)學(xué)習(xí)和實(shí)踐逐步提升,最終成長(zhǎng)為資深開(kāi)發(fā)者。

sql數(shù)據(jù)庫(kù)語(yǔ)句大全 sql數(shù)據(jù)庫(kù)常用語(yǔ)句匯總 sql數(shù)據(jù)庫(kù)語(yǔ)句大全 sql數(shù)據(jù)庫(kù)常用語(yǔ)句匯總 May 28, 2025 pm 08:12 PM

SQL常用語(yǔ)句包括:1.CREATETABLE創(chuàng)建表,如CREATETABLEemployees(idINTPRIMARYKEY,nameVARCHAR(100),salaryDECIMAL(10,2));2.CREATEINDEX創(chuàng)建索引,如CREATEINDEXidx_nameONemployees(name);3.INSERTINTO插入數(shù)據(jù),如INSERTINTOemployees(id,name,salary)VALUES(1,'JohnDoe',75000.00);4.SELECT查

我什麼時(shí)候應(yīng)該使用redis代替?zhèn)鹘y(tǒng)數(shù)據(jù)庫(kù)? 我什麼時(shí)候應(yīng)該使用redis代替?zhèn)鹘y(tǒng)數(shù)據(jù)庫(kù)? May 13, 2025 pm 04:01 PM

用戶edisinsteadofatraditionaldatabasewhenyourapplicationrequirespeedandreal-timedataprocorsing,sueAsAsforCaching,sessionmanagement,orrereal-timeanalytics.redisexcelsin:1)caching,緩存,減少載荷載量

如何使用雄辯在數(shù)據(jù)庫(kù)中創(chuàng)建新記錄? 如何使用雄辯在數(shù)據(jù)庫(kù)中創(chuàng)建新記錄? Jun 14, 2025 am 12:34 AM

要使用Eloquent在數(shù)據(jù)庫(kù)中創(chuàng)建新記錄,有四種主要方法:1.使用create方法,傳入屬性數(shù)組快速創(chuàng)建記錄,如User::create(['name'=>'JohnDoe','email'=>'john@example.com']);2.使用save方法手動(dòng)實(shí)例化模型並逐個(gè)賦值保存,適用於需要條件賦值或額外邏輯的場(chǎng)景;3.使用firstOrCreate根據(jù)搜索條件查找或創(chuàng)建記錄,避免重複數(shù)據(jù);4.使用updateOrCreate查找記錄並更新,若無(wú)則創(chuàng)建,適合處理導(dǎo)入數(shù)據(jù)等可能重

YII開(kāi)發(fā)人員與Laravel:有什麼區(qū)別? YII開(kāi)發(fā)人員與Laravel:有什麼區(qū)別? May 17, 2025 am 12:01 AM

yiiisbetterforhigh-porformanceProjectsswithasteperlearningcurve,lielararavelsuitsrapidDevelvepentWithAlargeeCosystem.1)selectyiiiforperperformanceandmodularity.2)perforforlararavellavellavelforeaseandext positemendextext positemendext pofforemeandext explendext

如何在操作系統(tǒng)(Windows,MacOS,Linux)上安裝YII? 如何在操作系統(tǒng)(Windows,MacOS,Linux)上安裝YII? Jun 17, 2025 am 09:21 AM

安裝Yii框架需根據(jù)不同操作系統(tǒng)配置PHP和Composer,具體步驟如下:1.Windows上需手動(dòng)下載PHP並配置環(huán)境變量,再安裝Composer,使用命令創(chuàng)建項(xiàng)目並運(yùn)行內(nèi)置服務(wù)器;2.macOS推薦用Homebrew安裝PHP和Composer,接著創(chuàng)建項(xiàng)目並啟動(dòng)開(kāi)發(fā)服務(wù)器;3.Linux(如Ubuntu)通過(guò)apt安裝PHP及擴(kuò)展和Composer,然後創(chuàng)建項(xiàng)目並配合Apache或Nginx部署正式環(huán)境。不同系統(tǒng)的主要差異在環(huán)境搭建階段,一旦PHP和Composer就緒,後續(xù)流程一致,注

See all articles