Laravel 初識--模型關聯 2

Luson發表於2019-01-22
  • 1、遠端一對多

    定義:通過多層間關聯取到遠層的關聯(如:通過國家id獲取所有使用者的文章)

file

  • 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);

相關文章