模型對(duì)象的關(guān)聯(lián)屬性可以直接作為當(dāng)前模型對(duì)象的動(dòng)態(tài)屬性進(jìn)行賦值或者取值操作(延遲查詢),雖然該屬性并非數(shù)據(jù)表字段,例如:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
public function profile()
{
return $this->hasOne('Profile');
}
}
我們?cè)谑褂?/p>
// 查詢模型數(shù)據(jù)
$user = User::find(1);
// 獲取動(dòng)態(tài)屬性
dump($user->profile);
// 給關(guān)聯(lián)模型屬性賦值
$user->profile->phone = '1234567890';
// 保存關(guān)聯(lián)模型數(shù)據(jù)
$user->profile->save();
在獲取動(dòng)態(tài)屬性profile
的同時(shí),模型會(huì)通過定義的關(guān)聯(lián)方法去查詢關(guān)聯(lián)對(duì)象的數(shù)據(jù)并賦值給該動(dòng)態(tài)屬性,這是一種關(guān)聯(lián)數(shù)據(jù)的“惰性加載”,只有真正訪問關(guān)聯(lián)屬性的時(shí)候才會(huì)進(jìn)行關(guān)聯(lián)查詢。
當(dāng)有大量的關(guān)聯(lián)數(shù)據(jù)需要查詢的時(shí)候,一般都會(huì)考慮選擇關(guān)聯(lián)預(yù)載入的方式(參考下一節(jié))。