搜尋
首頁php框架YIIyii連接資料庫有幾種方法

yii連接資料庫有幾種方法

PDO方式(適合多表連接查詢)。                   (建議學習:yii架構

$sql = "";//原生态sql语句 
xx::model()->dbConnection->createCommand($sql)->execute();  非select语句(update、insert、delete)
xx::model()->dbConnection->createCommand($sql)->queryRow(); 查询select一条记录
xx::model()->dbConnection->createCommand($sql)->queryAll(); 查询select多条记录

$sql = "select a.*, count(b.role_id)as num from {{user_role}} a left join {{user}} b on a.id = b.role_id group by b.role_id order by a.id";
$user_role_info = UserRole::model()->dbConnection->createCommand($sql)->queryAll(); 
$this->render("list", array('user_role_info'=>$user_role_info));

例如

$sql = "select a.*, count(b.role_id)as num from slgo_user_role a left join slgo_user b on a.id = b.role_id group by b.role_id order by a.id";
$user_role_info = UserRole::model()->dbConnection->createCommand($sql)->queryAll(); 
$this->render("list", array('user_role_info'=>$user_role_info));

##Active Record方法##例如

$post=new Post; 
$post->title='sample post'; 
$post->content='post body content'; 
$post->save();

##Active Record方法

##例如

$criteria=new CDbCriteria; 
$criteria->select='title';  // 只选择 'title' 列 
$criteria->condition='postID=:postID'; 
$criteria->params=array(':postID'=>10); 
$post=Post::model()->find($criteria);
##Active Record

例如

$post=Post::model()->find(array( 
    'select'=>'title', 
    'condition'=>'postID=:postID', 
    'params'=>array(':postID'=>10), 
));

##Active Record

例如

rreee

##! ##(1)New

$user = Yii::app()->db->createCommand() 
    ->select('id, username, profile') 
    ->from('tbl_user u') 
    ->join('tbl_profile p', 'u.id=p.user_id') 
    ->where('id=:id', array(':id'=>$id)) 
    ->queryRow();

Criteria方式

也可以使用$condition 指定更複雜的查詢條件。不使用字串, 我們可以讓 $condition 成為一個 CDbCriteria 的實例,它允許我們指定不限於 WHERE 的條件。 rrreee一種替代 CDbCriteria 的方法是給 find 方法傳遞一個陣列。數組的鍵和值各自對應標準(criterion)的屬性名和值

上面的例子可以重寫為如下:

rrreee

當一個查詢條件是關於按指定的值符合幾個列時, 我們可以使用findByAttributes()。我們讓 $attributes 參數是一個以列名做索引的值的陣列。

在一些框架中, 此任務可以透過呼叫類似findByNameAndTitle的方法實作。

雖然此方法看起來很誘人, 但它常常引起混淆, 衝突 和例如列名大小寫敏感的問題。

Query Builder 方式

rrreee

一、在用好AcitveRecord的情況下,即不要讓其產生比較二的SQL查詢方式,我的經驗,不必過分在意那點時間性能上的差別的。對於大數據查詢,記憶體空間上的話,在yii2中可以使用 toArray() 來節省記憶體消耗。

二、ActiveRecord之於PDO的優點在於其方便。

一個是比起書寫SQL語句,用ActiveRecord要簡單一點,更重要的是不容易出錯。

###二是提供了許多SQL語句以外的便利,例如參數過濾、綁定等等。這個web開發中你總是要遇到吧,一個SQL語句一個SQL語句的寫,程式碼重複使用程度不高不說,還容易某個地方忘記過濾了,形成安全隱患。 ######三、 Yii2中已經有Query,效能上優於ActiveRecord,可以當作替代品。當然,方便與效率是硬幣的兩面,其使用上不如ActiveRecord 方便。 ######但在專案中我的經驗是Query的使用頻率僅略少於ActiveRecord,個人認為Query/ActiveQuery是Yii2中引入的一個 激動人心的新feature。 ######四、前面幾條說的是ActiveRecord的應用場景。對於PDO,如果要用的話, 應該是對於比較複雜的SQL操作,例如一兩句話寫不清楚的。 ######這種情況下,使用ActiveRecord來構建,其複雜程度不亞於直接寫SQL,那麼可以考 慮使用PDO。但我印像中,如果專案中使用的SQL語句很複雜,會被寫成DB的View或是預存過程,所以,感覺PDO使用不多,可以說是極少的。 ######五、追求更高效率的話,個人也不認為應該過度使用PDO,這對後期維護帶來極大的難度。倒是可以考慮最佳化SQL查詢,優化索引和表格結構,使用快取等。值得一提的是,使用緩存,是最簡單、直接,成效也最明顯的手段。 ######六、永遠沒必要過早考慮效能問題###

以上是yii連接資料庫有幾種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
YII:高性能PHP框架的簡介YII:高性能PHP框架的簡介Apr 18, 2025 am 12:03 AM

Yii是一個高性能的PHP框架,適合快速開發Web應用。其核心概念包括:組件化設計:Yii提供豐富的組件和擴展,支持自動代碼生成,提升開發效率。 MVC架構:採用“約定優於配置”的設計理念,提高運行效率。緩存和數據庫支持:提供強大的緩存機制和數據庫操作,優化應用性能。

Yii的繼續使用:檢查其當前狀態Yii的繼續使用:檢查其當前狀態Apr 17, 2025 am 12:09 AM

Yii在現代開發中依然具有競爭力。 1)高性能:採用延遲加載和緩存機制。 2)安全性:內置CSRF和SQL注入防護。 3)擴展性:組件化設計便於擴展和自定義。

YII的社區:支持和資源YII的社區:支持和資源Apr 16, 2025 am 12:04 AM

Yii社區提供了豐富的支持和資源。 1.訪問官方網站和GitHub獲取文檔和代碼。 2.利用官方論壇和StackOverflow解決技術問題。 3.通過GitHubIssues報告bug和提出建議。 4.使用文檔和教程學習Yii框架。

YII:網絡開發的強大框架YII:網絡開發的強大框架Apr 15, 2025 am 12:09 AM

Yii是一個高性能的PHP框架,專為快速開發和高效的代碼生成設計。其核心特性包括:MVC架構:Yii採用MVC架構,幫助開發者將應用邏輯分離,使代碼更易維護和擴展。組件化和代碼生成:通過組件化和代碼生成,Yii減少開發者的重複工作,提高開發效率。性能優化:Yii使用延遲加載和緩存技術,確保高負載下的高效運行,並提供強大的ORM功能簡化數據庫操作。

YII:快速開發框架YII:快速開發框架Apr 14, 2025 am 12:09 AM

Yii是一個基於PHP的高性能框架,適用於快速開發Web應用。 1)它採用MVC架構和組件化設計,簡化開發過程。 2)Yii提供了豐富的功能,如ActiveRecord、RESTfulAPI等,支持高並發和擴展。 3)使用Gii工具可以快速生成CRUD代碼,提高開發效率。 4)調試時,可檢查配置文件、使用調試工具和查看日誌。 5)性能優化建議包括使用緩存、優化數據庫查詢和保持代碼可讀性。

YII的當前狀態:查看其受歡迎程度YII的當前狀態:查看其受歡迎程度Apr 13, 2025 am 12:19 AM

yiiremainspularbutislessfavoredthanlaravel,withabout14kgithubstars.itexcelsinperformanceandactiverecord,buthasasteperlearningcurveandasmallerecosystem.it'sidealfordealfordealfordEvelforkerfordEvelforkerplovelfordEvelforkerporporporporporporporporizatized efferporization effervastecoseposevastecosystecystemystem。

yii:解釋的關鍵特徵和優勢yii:解釋的關鍵特徵和優勢Apr 12, 2025 am 12:15 AM

Yii是一個高性能的PHP框架,其獨特之處在於組件化架構、強大的ORM和出色的安全性。 1.組件化架構讓開發者能靈活拼裝功能。 2.強大的ORM簡化了數據操作。 3.內置多種安全功能,確保應用安全。

Yii的架構:MVC等Yii的架構:MVC等Apr 11, 2025 pm 02:41 PM

Yii框架採用MVC架構,並通過組件、模塊等增強其靈活性和擴展性。 1)MVC模式將應用邏輯分為模型、視圖和控制器。 2)Yii的MVC實現通過動作細化請求處理。 3)Yii支持模塊化開發,提升代碼組織和管理。 4)使用緩存和數據庫查詢優化可提升性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。