亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

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

    yii2 hasone怎么用

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

    yii2 hasone怎么用

    一對(duì)多:hasMany

    一對(duì)一:hasOne (推薦學(xué)習(xí):yii教程)

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

    第一個(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; // 通過(guò)在Customer中定義的關(guān)聯(lián)方法(getOrders())來(lái)獲取這個(gè)客戶的所有的訂單。

    上面的兩行代碼會(huì)生成如下sql語(yǔ)句

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

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

    如果客戶的訂單改變了,我們?cè)僦匦抡{(diào)用

    $orders = $customer->orders;

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

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

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

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

    代碼說(shuō)明:

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

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)