91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

yii2中hasone的用法

發布時間:2021-01-08 16:06:52 來源:億速云 閱讀:206 作者:小新 欄目:編程語言

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

Yii2中的表之間的關聯有2種,它們用來指定兩個模型之間的關聯。

一對多:hasMany

一對一:hasOne

返回結果:這兩個方法的返回結果都為yii\db\ActiveQuery對象

第一個參數:所關聯的模型的類名稱。

第二個參數:是一個數組,其中鍵為所關聯的模型中的屬性,值為當前模型中的屬性。

關聯的使用

現在我們獲取一個客戶的所有的訂單信息

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

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

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

關聯結果緩存

如果客戶的訂單改變了,我們再重新調用

$orders = $customer->orders;

再次得到訂單的時候你會發現沒有變化。原因是只會在第一次執行$customer->orders的時候才會去數據庫里面查詢,然后會把結果緩存起來,以后查詢的時候都不會再執行sql。

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

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

然后就可以從數據庫里面取數據了。

代碼說明:

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

以上是“yii2中hasone的用法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰西县| 浦东新区| 广元市| 凌海市| 万山特区| 泰和县| 界首市| 石家庄市| 尼勒克县| 华蓥市| 准格尔旗| 云南省| 柳河县| 昂仁县| 舒城县| 贡觉县| 岱山县| 清远市| 鹤庆县| 阿拉善右旗| 齐齐哈尔市| 新化县| 贺州市| 勐海县| 通海县| 莎车县| 个旧市| 射洪县| 桂平市| 鸡西市| 健康| 宾川县| 九龙坡区| 九龙城区| 湄潭县| 北碚区| 大同县| 广安市| 当阳市| 邢台市| 普定县|