yii2中hasone的用法

小編給大家分享一下yii2中hasone的用法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

10多年的豐縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整豐縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“豐縣網(wǎng)站設(shè)計(jì)”,“豐縣網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Yii2中的表之間的關(guān)聯(lián)有2種,它們用來指定兩個(gè)模型之間的關(guān)聯(lián)。

一對多:hasMany

一對一:hasOne

返回結(jié)果:這兩個(gè)方法的返回結(jié)果都為yii\db\ActiveQuery對象

第一個(gè)參數(shù):所關(guān)聯(lián)的模型的類名稱。

第二個(gè)參數(shù):是一個(gè)數(shù)組,其中鍵為所關(guān)聯(lián)的模型中的屬性,值為當(dāng)前模型中的屬性。

關(guān)聯(lián)的使用

現(xiàn)在我們獲取一個(gè)客戶的所有的訂單信息

$customer = Customer::findOne(1);  
$orders = $customer->orders; // 通過在Customer中定義的關(guān)聯(lián)方法(getOrders())來獲取這個(gè)客戶的所有的訂單。

上面的兩行代碼會生成如下sql語句

SELECT * FROM customer WHERE id=1;  
SELECT * FROM order WHERE customer_id=1;

關(guān)聯(lián)結(jié)果緩存

如果客戶的訂單改變了,我們再重新調(diào)用

$orders = $customer->orders;

再次得到訂單的時(shí)候你會發(fā)現(xiàn)沒有變化。原因是只會在第一次執(zhí)行$customer->orders的時(shí)候才會去數(shù)據(jù)庫里面查詢,然后會把結(jié)果緩存起來,以后查詢的時(shí)候都不會再執(zhí)行sql。

那么如果我想再次執(zhí)行sql如何做呢?可以執(zhí)行

unset($customer->orders);  
$customer->orders;

然后就可以從數(shù)據(jù)庫里面取數(shù)據(jù)了。

代碼說明:

// 執(zhí)行sql語句: SELECT * FROM customer WHERE id=1  
$customer = Customer::findOne(1);  
//執(zhí)行sql:SELECT * FROM order WHERE customer_id=1  
$orders1 = $customer->orders;  
//這個(gè)不會執(zhí)行sql,直接使用上面的緩存結(jié)果  
$orders2 = $customer->orders;
//如果中間的用戶訂單有變化,我們就不能從緩存中獲取,要unset掉
unset($customer->orders);  
$orders2 = $customer->orders;

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

文章名稱:yii2中hasone的用法
鏈接分享:http://muchs.cn/article2/ghesic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、電子商務(wù)、虛擬主機(jī)微信小程序、網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司