站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

yii2 hasone怎么用

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

yii2 hasone怎么用

一對多:hasMany

一對一:hasOne (推薦學習:yii教程)

返回結(jié)果:這兩個方法的返回結(jié)果都為yiidbActiveQuery對象

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

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

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

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

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

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

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

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

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

$orders = $customer->orders;

再次得到訂單的時候你會發(fā)現(xiàn)沒有變化。原因是只會在第一次執(zhí)行$customer->orders的時候才會去數(shù)據(jù)庫里面查詢,然后會把結(jié)果緩存起來,以后查詢的時候都不會再執(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;   //這個不會執(zhí)行sql,直接使用上面的緩存結(jié)果   $orders2 = $customer->orders; //如果中間的用戶訂單有變化,我們就不能從緩存中獲取,要unset掉 unset($customer->orders);   $orders2 = $customer->orders;

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
精品综合久久久久久97超人| 亚洲精品国产va在线观看蜜芽| 亚洲午夜国产精品| 久久国产精品一国产精品| 久久久精品波多野结衣| 日韩精品视频在线观看免费| 无码日韩人妻AV一区二区三区| 精品极品三级久久久久| 四虎国产精品永久在线无码| 99精品国产第一福利网站| 久久成人国产精品免费软件 | 女人香蕉久久**毛片精品| 国内精品伊人久久久久影院对白| A级精品国产片在线观看| 精品乱人伦一区二区| 日韩毛片免费在线观看| 亚洲AV日韩综合一区| 亚洲欧美日韩一区二区三区| 亚洲日韩国产精品第一页一区| 国产在线91精品天天更新| 国产成人精品高清免费| 国产精品嫩草影院在线| 国产精品爽爽va在线观看无码| 精品国产一区二区三区久 | 日韩乱码人妻无码中文字幕| 国产乱人伦真实精品视频| 国产精品久久久久久福利| 国产精品亚洲va在线观看| 国产精品va一区二区三区| 国产精品青青青高清在线观看 | 国产精品免费看久久久无码| 国产精品酒店视频| 国产精品冒白浆免费视频| 国产一区二区三区国产精品| 国产精品成年片在线观看| 国产精品伦子一区二区三区| 国产主播精品福利19禁vip| 日韩成人无码中文字幕| 久久久久久久久无码精品亚洲日韩| 欧美日韩精品一区二区在线观看| 青草午夜精品视频在线观看|