YII2資料庫查詢實踐
這篇文章主要介紹了YII2資料庫查詢實踐的相關資料,需要的朋友可以參考下
初探yii2框架,對增刪改查,關聯查詢等資料庫基本操作的簡單實踐。
資料庫配置。
/config/db.php 進行資料庫設定
實作過程中有個test庫-》test表-》兩個記錄如下
mysql> select * from test;
+----+---- ----+
| id | name |
+----+--------+
| 1 | zhuai |
| 2 | heng |
+----+--------+
18 rows in set (0.00 sec)
sql 查詢方式
yii2 提供了原始的資料庫查詢方式findBySql;同時, 透過佔位符的方式,自動進行了基本的sql注入防禦。上碼
// 最基本的查詢方式
$sql = "select * from test where 1";
$res = Test::findBySql($sql)->all();
var_dump(count($res) ); // res->2
// findbysql 防止sql注入方式
$id = '1 or 1=1';
$sql = "select * from test where id = " . $id;
$res = Test::findBySql($sql)- >all();
var_dump(count($res)); // res-> 2
$sql = "select * from test where id = :id";
// 定位符會自動防止sql 注入
$res = Test::findBySql($sql,array(":id"=>$id))->all();
var_dump(count($res)); // res->1
activeRecord查詢方式
每個框架除了原有的sql方式,都會提供對應的封裝的查詢方式,yii2亦然。
創建model
yii的model基本方式如下,程式碼如下不贅述。
namespace appmodels;
use Yii;
use yiidbActiveRecord;
class Test extends ActiveRecord
{
// 可無,對應表:預設類別名稱和函數名稱匹配,則無需此函數名稱匹配,則無需此符號 function )
{
return 'test';
}
// 可無,驗證器:主要用於校驗各個欄位
public function rules(){
return [
['id', 'integer'],
[ 'name', 'string', 'length' => [0, 100]],
];
}
}
use appelsTest;增加操作
/ add $test = new Test();
$test->name = 'test';
// 合法性校驗
$test->validate();
if($test->hasErrors()){
echo "資料不合法";
die;
}
$test->save();
// id = 1
$res = Test::find()->where(['id' => 1])->all();var_dump(count($res)); //1
// id > 0
$res = Test::find()->where(['>','id',0])->all();
var_dump(count($res)) ; //2
// id > =1 id $res = Test::find()->where(['between','id',1,2])->all();
var_dump(count($res)); //2
// name欄位like
$res = Test::find()->where(['like', 'name', 'cuihuan'])->all( );
var_dump(count($res)); //2
// 查詢的使用obj->array
$res = Test::find()->where(['between','id',1, 2])->asArray()->all();
var_dump($res[0]['id']); //2
// 批次查詢,對於大記憶體操作的批次查詢
foreach (Test: :find()->batch(1) as $test) {
var_dump(count($test));
}
刪除操作
// 選出來刪除
$res = Test::find()->where(['id'=>1])->all();$res[0]->delete();
//直接刪除
var_dump(Test::deleteAll('id>:id', array(':id' => 2)));
修改操作
$res = Test::find()->where(['id'=>4])->one();
$res->name = "update";$res ->save();
一個學生表(student):id ,name;
// 相應學生的所有score
$stu = Student::find()->where(['name'=>'xiaozhuai'])->one();
var_dump($stu->id);// 基本取得
$scores_1 = $stu->hasMany('appmodelScore',['stu_id'=>$stu->id])->asArray()->all();$scores_2 = $stu-> hasMany(Score::className(),['stu_id'=>'id'])->asArray()->all();
var_dump($scores_1);
var_dump($scores_2);
兩種關聯查詢方式;但是,在controller進行相關操作,程式碼顯的過於混亂,在model中封裝呼叫
首先在student model中封裝相關關聯呼叫函數
namespace appmodels;
use Yii;
use yiidbActiveRecord;
class Student extends ActiveRecordcone*{
|c;
}
// 取得分數資訊
public function getScores()
{
$scores = $this->hasMany(Score::className(), ['stu_id' => 'id'])->asArray()- >all();
return $scores;
}
}
之後直接調用,兩種調用方式
$scores = $stu->getScores();
var_dump($scores );// 利用__get 的自動調用的方式
$scores = $stu->scores;
var_dump($scores);
最後

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

直接從數據庫中恢復被刪除的行通常是不可能的,除非有備份或事務回滾機制。關鍵點:事務回滾:在事務未提交前執行ROLLBACK可恢復數據。備份:定期備份數據庫可用於快速恢復數據。數據庫快照:可創建數據庫只讀副本,在數據誤刪後恢復數據。慎用DELETE語句:仔細檢查條件,避免誤刪數據。使用WHERE子句:明確指定要刪除的數據。使用測試環境:在執行DELETE操作前進行測試。

如何使用 phpMyAdmin 連接到 MySQL?訪問 phpMyAdmin 的 URL,通常為 http://localhost/phpmyadmin 或 http://[您的服務器 IP 地址]/phpmyadmin。輸入您的 MySQL 用戶名和密碼。選擇您要連接的數據庫。點擊 "連接" 按鈕以建立連接。
