久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

      yii2 hasone怎么用

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

      yii2 hasone怎么用

      一對多:hasMany

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

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

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

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

      關(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號