真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

yii連接數(shù)據(jù)庫(kù)的方法有哪些-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)專注于渦陽(yáng)企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。渦陽(yáng)網(wǎng)站建設(shè)公司,為渦陽(yáng)等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

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

$sql = "";//原生態(tài)sql語(yǔ)句 
xx::model()->dbConnection->createCommand($sql)->execute();  非select語(yǔ)句(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 指定更復(fù)雜的查詢條件。 不使用字符串, 我們可以讓 $condition 成為一個(gè) CDbCriteria 的實(shí)例,它允許我們指定不限于 WHERE 的條件。

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

一種替代 CDbCriteria 的方法是給 find 方法傳遞一個(gè)數(shù)組。 數(shù)組的鍵和值各自對(duì)應(yīng)標(biāo)準(zhǔn)(criterion)的屬性名和值

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

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

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

在一些框架中, 此任務(wù)可以通過(guò)調(diào)用類似findByNameAndTitle的方法實(shí)現(xiàn)。

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

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查詢方式,我的經(jīng)驗(yàn),不必過(guò)分在意那點(diǎn)時(shí)間性能上的區(qū)別的。對(duì)于大數(shù)據(jù)查詢,內(nèi)存空間上的話,在yii2中可以使用 toArray() 來(lái)節(jié)省內(nèi)存消耗。

二、ActiveRecord之于PDO的長(zhǎng)處在于其方便。

一個(gè)是相比于書寫SQL語(yǔ)句,用ActiveRecord要簡(jiǎn)單一點(diǎn),更重要的是不容易出錯(cuò)。

二是提供了許多SQL語(yǔ)句之外的便利,比如參數(shù)過(guò)濾、綁定等等。這個(gè)web開發(fā)中你總要遇到吧,一個(gè)SQL語(yǔ)句一個(gè)SQL語(yǔ)句的寫,代碼復(fù)用程度不高不說(shuō),還容易某個(gè)地方忘記過(guò)濾了,形成安全隱患。

三、 Yii2中已經(jīng)有Query,性能上優(yōu)于ActiveRecord,可以作為替代。當(dāng)然,方便與效率是硬幣的兩面,其使用上不如ActiveRecord 方便。

但在項(xiàng)目中我的經(jīng)驗(yàn)是Query的使用頻率僅略少于ActiveRecord,個(gè)人認(rèn)為Query/ActiveQuery是Yii2中引入的一個(gè) 激動(dòng)人心的新feature。

四、前面幾條說(shuō)的是ActiveRecord的應(yīng)用場(chǎng)景。對(duì)于PDO,如果要用的話, 應(yīng)該是對(duì)于比較復(fù)雜的SQL操作,比如一兩句話寫不清楚的。

這種情況下,使用ActiveRecord來(lái)構(gòu)建,其復(fù)雜程度不亞于直接寫SQL,那么可以考 慮使用PDO。但我印象中,如果項(xiàng)目中使用的SQL語(yǔ)句很復(fù)雜,會(huì)被寫成DB的View或者存儲(chǔ)過(guò)程,所以,感覺(jué)PDO使用并不多,可以說(shuō)是極少的。

五、追求更高效率的話,個(gè)人也不認(rèn)為應(yīng)該過(guò)多使用PDO,這給后期維護(hù)帶來(lái)極大的難度。倒是可以考慮優(yōu)化SQL查詢,優(yōu)化索引和表結(jié)構(gòu),使用緩存等。值得一提的是,使用緩存,是最簡(jiǎn)單、直接,成效也最為明顯的手段。

六、永遠(yuǎn)沒(méi)必要過(guò)早考慮性能問(wèn)題

以上是“yii連接數(shù)據(jù)庫(kù)的方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)題目:yii連接數(shù)據(jù)庫(kù)的方法有哪些-創(chuàng)新互聯(lián)
鏈接URL:http://weahome.cn/article/jeigo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部