模型對象的關聯屬性可以直接作為當前模型對象的動態屬性進行賦值或者取值操作(延遲查詢),雖然該屬性并非數據表字段,例如:

<?php
namespace app\index\model;

use think\Model;

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('Profile');
    }
}

我們在使用

// 查詢模型數據
$user = User::find(1);
// 獲取動態屬性
dump($user->profile);
// 給關聯模型屬性賦值
$user->profile->phone = '1234567890';
// 保存關聯模型數據
$user->profile->save();

在獲取動態屬性profile的同時,模型會通過定義的關聯方法去查詢關聯對象的數據并賦值給該動態屬性,這是一種關聯數據的“惰性加載”,只有真正訪問關聯屬性的時候才會進行關聯查詢。

當有大量的關聯數據需要查詢的時候,一般都會考慮選擇關聯預載入的方式(參考下一節)。