首頁 > php框架 > YII > yii2 hasone怎麼用

yii2 hasone怎麼用

(*-*)浩
發布: 2019-11-07 09:57:56
原創
4026 人瀏覽過

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

yii2 hasone怎麼用

一對多:hasMany

一對一:hasOne      (建議學習:yii教學

傳回結果:這兩個方法的回傳結果都為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怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板