- 1、遠端一對多
定義:透過多層間關聯取到遠層的關聯(如:透過國家id獲取所有使用者的文章)
- 2.N+1問題:
可以使用預載入大量減少查詢次數。使用 with 方法指定想要預載入的關聯物件
$result = UserRole::with('role')->get();
foreach ($result as $val) {
//查詢什麼關聯資料,需要指定其關聯模型屬性
dump($val->role->user_name);
} -
2、修改器與獲取器
(1)獲取器:設定後獲取的欄位會自動改變你設定值
設定方法規則:get欄位名Attribute 注意方法名稱應該使用駝峰式大小寫命名,而對應的 database 欄位名稱是下劃線分隔小寫命名 例子:
//定義獲取器 IsRole === is_role
public function getIsRoleAttribute($value){
$data = [
'1' => '有許可權',
'0' => '有許可權',
];
return $data[$value];
}//獲取 $reuslt = UserRole::find(2);
(2) 修改器:設定欄位後會修改為你設定的內容
設定的規則:set欄位名Attribute 欄位名規則:與獲取器一樣 例子:
//定義修改器 IsRole === role_name
public fnction setRoleNameAttribute($value){
$this->attributes['role_name'] = strtolower($value);
}
//獲取
$reuslt = UserRole::find(2);
$reuslt ->role_name = 'WINNER';
dump($reuslt);
本作品採用《CC 協議》,轉載必須註明作者和本文連結