模型對(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é))。