中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

yii連接數據庫的方法有哪些

發布時間:2021-01-06 11:52:08 來源:億速云 閱讀:173 作者:小新 欄目:編程語言

小編給大家分享一下yii連接數據庫的方法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

PDO方式(適合多表連接查詢)。              

$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方式

(1)New

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

Criteria方式

也可以使用 $condition 指定更復雜的查詢條件。 不使用字符串, 我們可以讓 $condition 成為一個 CDbCriteria 的實例,它允許我們指定不限于 WHERE 的條件。

$criteria=new CDbCriteria; 
$criteria->select='title';  // 只選擇 'title' 列 
$criteria->condition='postID=:postID'; 
$criteria->params=array(':postID'=>10); 
$post=Post::model()->find($criteria);

一種替代 CDbCriteria 的方法是給 find 方法傳遞一個數組。 數組的鍵和值各自對應標準(criterion)的屬性名和值

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

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

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

在一些框架中, 此任務可以通過調用類似findByNameAndTitle的方法實現。

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

Query Builder 方式

$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();

一、在用好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連接數據庫的方法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郓城县| 喜德县| 阿拉善盟| 清涧县| 文成县| 洞头县| 湾仔区| 西乌珠穆沁旗| 呼和浩特市| 宜兴市| 刚察县| 宁陕县| 宿迁市| 井陉县| 安福县| 克拉玛依市| 杭州市| 富源县| 新河县| 桦南县| 福安市| 天门市| 荥经县| 津南区| 大埔区| 中超| 观塘区| 赤水市| 麦盖提县| 石台县| 鞍山市| 长白| 桐梓县| 无为县| 出国| 新源县| 东乡| 泌阳县| 讷河市| 石渠县| 民县|