Eloquent의 Accessors와 Mutators

Submitted by river - 등록 10 years ago - 수정 10 years ago

DB에서 데이터를 읽을 때, 혹은 저장할 때 규칙을 정해서 값을 변환하고 싶을 때가 있다. 날짜를 읽을 때 YYYY-MM-DD의 문자열로 바꾼다든지, 비밀번호를 저장할 때 해시코드로 저장하든지 등을 생각해 볼 수 있다.

Eloquent는 모델의 attribute에 값을 읽거나 쓸 때 자동으로 호출되는 메소드를 정의하는 방법을 제공하는 데 이를 각각 AccessorMutator라고 부른다.

Accessor는 get{어트리뷰트명}Attribute 형태, Mutator는 set{어트리뷰트명}Attribute 형태로 메소드 명을 정해서 사용하면 된다.

주의: 컬럼명이 snake-case 형태여도 accessor, mutator는 camel-case 형태로 이름을 정해야 한다. 예를 들어 컬럼명이 first_name이면 accessor는 getFirstName으로 써야 한다.

Accessor

Accessor는 모델의 attribute 값을 읽을 때 불려지는 메소드다.

class User extends Eloquent {

    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }

}

Mutator

Mutator는 모델의 attribute 값을 설정할 때 불려지는 메소드다.

class User extends Eloquent {

    public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = Hash::make($value);
    }
}

관련 글

comments powered by Disqus