Yii ?????? ? ?????? ?? ????? ????? ?? ??? ??? ?? ??? ???? ?? ?? PHP ? ?????? ???????, ? ? ??? ??? ??? ?? ?? ? ?????. Yii ???????? SQL? ??? ??? ???? ??????? ????? ???? ????? ???? ??? ? ????.
Yii ?????? ?? ???? ?? ?? ??? ??, ?? ?? ??, ?? ?? ? ?? SQL ?? ??? ?????. ? ????? ???? Yii ??????? ??? ??? ???? ??? ? ? ?? ? ??? ??? ?? ??? ?? ???? ??? ??? ?????.
- Active Record query
Active Record ??? Yii ??????? ?? ????? ???? ??? ??? ?? ? ?????. ?? ?? ????? ???? ??? ??????? ???? ??? ? ?? ?? ?? ?????? ?????. . Yii ??????? ? Active Record ???? ?????? ???? ???? ???? ?? ???? ???? ???? ???? ???? ? ????.
??? Active Record ??? ????.
//創(chuàng)建一個Active Record對象 $post = Post::findOne(1); //輸出該對象的屬性 echo $post->title;
? ???? ?? findOne()
???? ???? Post
???? ????? ?????. ? ???? ??????? Post
???? ?? ?? ? 1? ???? ???? ???? Active Record ??? ??? ?? ??? title
??? ???????. ???? ?? ??? ??????. findOne()
方法創(chuàng)建了一個Post
類的實例,這個方法會查詢數(shù)據(jù)庫中Post
表中主鍵為1的記錄并返回一個Active Record對象;然后我們使用該對象的title
屬性來訪問該記錄的標題屬性。
在實際開發(fā)中,我們通常需要對數(shù)據(jù)進行過濾、排序、分頁等操作。Yii框架提供了豐富的方法來實現(xiàn)這些功能。例如,我們可以使用where()
方法來添加過濾條件,使用orderBy()
方法來指定排序方式,使用limit()
方法來限制返回的記錄數(shù),使用offset()
方法來指定返回記錄的起始位置。以下是一個例子:
//查詢標題包含“Yii”并且作者為“admin”的文章,并按照發(fā)布時間倒序排序,返回前10條記錄 $posts = Post::find()->where(['like', 'title', 'Yii']) ->andWhere(['author' => 'admin']) ->orderBy(['created_at' => SORT_DESC]) ->limit(10) ->offset(0) ->all();
這個例子中,我們使用了find()
方法創(chuàng)建了一個Active Record查詢對象,然后使用where()
和andWhere()
方法添加了兩個過濾條件,分別是標題包含“Yii”和作者為“admin”;使用orderBy()
方法指定了按照發(fā)布時間倒序排序;使用limit()
方法限制了返回的記錄數(shù)為10條;使用offset()
方法指定返回記錄的起始位置為0條記錄。最后,我們使用all()
方法執(zhí)行查詢,并返回所有符合要求的記錄。
- Query Builder查詢
Query Builder是Yii框架中另一個常用的數(shù)據(jù)訪問方式,它提供了一種鏈式調用的方式來構建SQL查詢語句,比較適合于復雜的查詢需求。在Yii框架中,我們可以使用Yii::$app->db->createCommand()
方法創(chuàng)建一個Query Builder對象,然后使用該對象的一系列方法來構建查詢語句。
以下是一個Query Builder查詢的例子:
//創(chuàng)建一個查詢構建器對象,并構建查詢語句 $query = Yii::$app->db->createCommand() ->select('id, title, content') ->from('post') ->where(['like', 'title', 'Yii']) ->andWhere(['author' => 'admin']) ->orderBy(['created_at' => SORT_DESC]) ->limit(10) ->offset(0); //執(zhí)行查詢,并返回結果集 $posts = $query->queryAll();
這個例子中,我們首先使用Yii::$app->db->createCommand()
方法創(chuàng)建了一個Query Builder對象,然后使用該對象的select()
、from()
、where()
、andWhere()
、orderBy()
、limit()
和offset()
等方法來構建查詢語句。最后,我們使用queryAll()
方法執(zhí)行查詢,并返回所有符合要求的記錄。
Query Builder與Active Record最大的區(qū)別在于,Query Builder不需要定義模型類,因此適用于一些簡單的查詢場景,如統(tǒng)計類查詢。
- 命令查詢
命令查詢是Yii框架中最原始的數(shù)據(jù)訪問方式,我們可以使用該方式來執(zhí)行一些不需要返回結果集的數(shù)據(jù)庫操作,如更新、刪除、插入等。在Yii框架中,我們可以使用Yii::$app->db->createCommand()
方法創(chuàng)建一個Command對象,然后使用該對象的execute()
方法來執(zhí)行SQL語句。
以下是一個命令查詢的例子:
//創(chuàng)建一個命令對象,并執(zhí)行SQL語句 Yii::$app->db->createCommand() ->update('post', ['status' => 1], 'author = "admin"') ->execute();
這個例子中,我們首先使用Yii::$app->db->createCommand()
方法創(chuàng)建了一個Command對象,然后使用該對象的update()
方法構建了一條更新語句,該語句將post
表中所有author
為“admin”的記錄的狀態(tài)屬性更新為1;最后,我們使用execute()
方法執(zhí)行該更新語句。
- 原始SQL查詢
在一些特殊情況下,我們可能需要執(zhí)行一些復雜的查詢語句,無法通過Active Record、Query Builder或命令查詢來處理,這時可以使用原始SQL查詢。在Yii框架中,我們可以使用Yii::$app->db->createCommand()
方法創(chuàng)建一個Command對象,然后使用該對象的setSql()
方法來指定原始的SQL語句,并使用queryAll()
where()
???? ???? ?? ??? ????, orderBy()
???? ???? ?? ??? ????, limit()< /code> ??? ???? ??? ?? ????? <code>offset()
???? ???? ???? ???? ?? ??? ?????. ??? ?????. //創(chuàng)建一個命令對象,并執(zhí)行原始SQL查詢 $connection = Yii::$app->db; $command = $connection->createCommand(" SELECT p.id, p.title, u.username FROM post p LEFT JOIN user u ON p.author_id = u.id WHERE p.status = 1 AND u.role = 'admin' ORDER BY p.created_at DESC LIMIT 10 OFFSET 0 "); $posts = $command->queryAll();? ?????
find()
???? ???? Active Record ?? ??? ??? ?? where()
? < code> andWhere() ???? ??? "Yii"? ???? ???? "admin"??? ? ?? ?? ??? ?????. orderBy()
???? ??? ???? ? ?????. ??? ??? ??? ?????. limit()
???? ??? ??? ?? 10?? ?????. ??? ???? ?? ??? ????? offset()
???? ?????. ??? 0 ?????. ????? all()
???? ???? ??? ???? ?? ??? ???? ?? ???? ?????. ??- ??Query Builder Query??????Query Builder? Yii ??????? ????? ???? ? ?? ??? ??? ????, ??? ?? ?? ??? ? ??? SQL ?? ?? ???? ?? ?? ??? ?????. . Yii ????????
Yii::$app->db->createCommand()
???? ???? Query Builder ??? ??? ?? ?? ??? ??? ???? ???? ??? ??? ? ????. ?? ?? ?????. ??????? ?? ??? ??? ????. ??rrreee??? ???? ?? Yii::$app->db->createCommand()
???? ??? ?? ??? select()
, from()
, where()
, andWhere()</code? ?????. >, <code>orderBy()
, limit()
? offset()
? ?? ???? ?? ?? ???? ? ?????. ????? queryAll()
???? ???? ??? ???? ?? ??? ???? ?? ???? ?????. ?????? ??? ??? ???? ?? ? ???? ?? ??? ?? ???? ??? ??? ?? ??? ?? ??? ?? ?? ??? ?? ????? ????? ????. ??- ??Command query??????Command query? Yii ??????? ?? ???? ??? ??? ?????. ? ??? ???? ?? ??? ??? ??? ?? ?? ?????? ??? ??? ? ????. ????, ??, ?? ? Yii ????????
Yii::$app->db->createCommand()
???? ???? Command ??? ??? ?? ?? ??? execute() ??? ? ????. /code >SQL?? ???? ?????. ??????? ?? ??? ????. ??rrreee??? ???? ?? Yii::$app->db->createCommand()
???? ???? Command ??? ????. , ?? ?? ??? update()
???? ???? ???? ?? ?????. ? ???? author
? "admin"? post
???? ?? ???? ???????. " ?? ??? 1? ???????. ????? execute()
???? ???? ???? ?? ?????. ?????? SQL ??????????? ???? Active Record, ?? ?? ?? ?? ??? ?? ??? ? ?? ?? ??? ?? ?? ???? ? ?? ????. ?? SQL ??? ??????. Yii ???????? Yii::$app->db->createCommand()
???? ???? Command ??? ??? ?? ?? ??? setSql()<? ??? ? ????. /code > ???? ???? ?? SQL ?? ???? <code>queryAll()
???? ???? ??? ?????. ??????? ?? SQL ??? ????. ??//創(chuàng)建一個命令對象,并執(zhí)行原始SQL查詢
$connection = Yii::$app->db;
$command = $connection->createCommand("
SELECT p.id, p.title, u.username
FROM post p LEFT JOIN user u ON p.author_id = u.id
WHERE p.status = 1 AND u.role = 'admin'
ORDER BY p.created_at DESC
LIMIT 10 OFFSET 0
");
$posts = $command->queryAll();
這個例子中,我們首先創(chuàng)建了一個Command對象,并使用setSql()
方法指定一條原始的SQL查詢語句。該語句將post
表和user
表進行左連接,查詢出所有狀態(tài)為1且用戶角色為“admin”的文章,并按照發(fā)布時間倒序排序,返回前10條記錄。最后,我們使用queryAll()
方法執(zhí)行該查詢,并返回所有符合要求的記錄。
總結:
在Yii框架中,我們可以使用多種方式來訪問數(shù)據(jù)庫中的數(shù)據(jù),包括Active Record查詢、Query Builder查詢、命令查詢和原始SQL查詢。不同的查詢構建器適用于不同的查詢場景,我們需要根據(jù)實際需求來選擇最合適的查詢方式。通過本文的介紹,相信讀者已經(jīng)對Yii框架中的數(shù)據(jù)查詢有了更深入的了解,希望對大家在實際開發(fā)中使用Yii框架有所幫助。
? ??? Yii ?????? ??? ??: ???? ????? ???? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











C ??? ??? ??: C ??? ?? ?? ?? ????? ?? ? ??? ??? ?????? ?? ?? ????? ??? C ??? ?? ??? ??? ??? ?? ???, ??? ?? ?? ?? ???? ????? ?? ? ??? ? ?????. ? ????? C ??? ??? ??? ???? ??? ???? ??? ??? ? ?? ??? ???????. ?? C ??? ??? ??? ??? ??? ??? ????. ?? ????? ??? ?? C ??? ??? ??? ???? ???? ??? ????. ?????? ???? ??? ????

Go ??? ?? ? ?? Golang???? ??? Go ??? ?? ????? ???? ?? ???? ????? ?? Google?? ??? ?? ?? ????? ?????. Go ??? ?? ?? ????? ???? ??? ??? ???? ??? ??? ??? ??????. ? ????? Go ??? ??? ??? ???? ?? ?? ??? ?? Go ??? ???? ?????. ?? ??? ?? Go ??? ????? ??? ? ?? ????? ?? ???? ?? ?????? ?????.

C ???? ??? ?????! ???? ???? 5?? ??! ???? ???? ???? ?? ???? C ???? ??? ????? ??? ?? ???. ?? ?? ?? ??? ????? ??? ??? C ????? ?? ??? ??? ??? ???? ??? ??? ??? ????. ???? ?? ??. ?? C???? ??? ? ?????. ???? C ????? ????? ???? ??? ?????? ????, ? ????? C ???? ?? ?? ??? ?? ???? ? ??? ?? 5?? ???? ?? ??? ?????. 1. ?? ??? ?????. ?? ??? ???? ??? ? ???? ?? ?????.

??: Go ?? ??? ??? ?? ???? ?? ??? ???? ????? ???? ??? ???? ?? ????? ???? ?? ??? ?? ????. ????? ???? ????? ??? Go ??? ??? ?? ?????? ?? ??? ????? ??? ??? ??? ?? ???? ????? ??? ? ????. ? ???? Go ???? ??? ??? ???? ??? ?? ???? ??? ???? ???? ?? ??? ?????. 1.UTF-8 ??? ? ??? ?? Go ???? ???? ????? UTF-8 ???? ?????.

Laravel? YII? ?? ???? ?? ??, ??? ?? ? ?? ???????. 1. Laravel? ??? ???? ???? ????? Eloquentorm ? Artisan ??? ?? ??? ??? ???? ?? ?? ? ????? ?????. 2.YII? ??? ???? ????, ? ?? ??????? ????, ???? Activerecord ? ?? ???? ????? ??? ?? ??? ????.

Docker? ???? YII ??????? ??????? ???? ???? ??? ?????. 1. Dockerfile? ???? ??? ?? ????? ?????. 2. DockerCompose? ???? YII ?? ???? ? MySQL ??????? ??????. 3. ??? ?? ? ??? ???????. ???? ?? ?? ???? ??? ????? ??? ??? ??? ???? ?? Dockerfile? ?? ??? ?? ??? ???? ?? ?????.

Python? C++? ?? ???? ? ?? ????? ???, ?? ??? ??? ??? ????. ?????? ??? ?? ????? Python?? C++? ???? ???? ?? ?? ??? ?????. ? ????? Python ? C++? ?? ??? ???? ?? ??? ??? ??? ? ??? ??? ?????. ?? ????? ??? ?????. Python? ?? ???, ??? ?? ? ??? ???? ? ??? ?? ??? ????? ?????. C++? ?? ????

[Go ??? ??? ?? ??: ?????? ?? ????? ??? ???? ???? ?? ??? ?????.] ?? ????? ?? ???? Go ??? ?? ??? ?? ???, Go ??? ???? ???? ??? ??? ?? ? ??? ?? ????. ???. ???? ??? ??? ????? ??? Go ??? ?? ???? ???? ?? ?? ????? ????? ??? ??? ???? ???? ????. ? ???? Go ??? ?? ??? ?? ????? ????, ???? ?? ??? ?? ??? ??? ??? ???? ???? ???? ??? ??? ????. ??? ??(GoModules) 1?? Go ??
