laravel 기본 튜 토리 얼 - 액세스 기

5827 단어
Eloquent: 액세스 기
간단 한 소개
접근 기와 메모리 에 서 는 Eloquent 모델 속성 값 을 가 져 오 거나 설정 할 때 포맷 할 수 있 습 니 다.예 를 들 어 하나의 값 이 데이터베이스 에 저장 되 기 전에 Laravel encrypter 를 암호 화하 고 모델 을 통 해 접근 할 때 이 속성 을 자동 으로 복호화 할 수 있 습 니 다.
사용자 정의 접근 기와 메모리 외 에 도 Eloquent 는 날짜 필드 를 Carbon 인 스 턴 스 로 자동 으로 변환 하거나 문자열 필드 를 JSON 으로 변환 할 수 있 습 니 다.
접근 기 & 접근 기
접근 기 정의
접근 기 를 정의 하기 위해 서 는 모델 에 getFooAttribute 방법 을 만들어 야 합 니 다. 그 중 Foo 은 방문 해 야 할 열 이름 의 낙타 봉 방식 의 이름 입 니 다.이 예 에서, 우 리 는 first_name 속성의 접근 기 를 정의 할 것 이다.이 접근 기 는 Eloquent 에서 first_name 속성 값 을 가 져 오 려 고 시도 할 때 활성 화 됩 니 다.

보시 다시 피 속성 원본 값 은 접근 기 에 전 달 됩 니 다. 원본 값 을 조작 하고 포맷 된 값 을 되 돌려 줍 니 다.간단 한 접근 first_name 속성 만 있 으 면 액세스 기 에서 이 값 을 접근 할 수 있 습 니 다:
$user = App\User::find(1);

$firstName = $user->first_name;

메모리 정의
메모리 하 나 를 정의 하기 위해 서 는 모델 에 setFooAttribute 방법 을 정의 해 야 합 니 다. 그 중 Foo 은 방문 하고 자 하 는 열의 낙타 봉 스타일 의 이름 입 니 다.그렇다면 이번 에는 first_name 속성 에 대한 메모리 정 의 를 내 립 니 다.이 메모 리 는 모델 이 속성 값 을 설정 하려 고 시도 할 때 호출 됩 니 다.
attributes['first_name'] = strtolower($value);
  }
}

저장 소 는 속성 에 설 정 된 값 을 받 습 니 다. 이 값 을 조작 하고 모델 내부 first_name 속성 에 설정 할 수 있 습 니 다.그래서 예 를 들 어 우리 가 $attributes 속성 을 first_name 로 설정 하려 고 한다 면:
$user = App\User::find(1);

$user->first_name = 'Sally';

이 예 에서 Sally 방법 은 호출 되 고 수반 된다 setFirstNameAttribute.메모리 에 서 는 이름 을 소문 자로 만 든 다음 내부 Sally 배열 에 값 을 설정 합 니 다.
날짜 접근 기
기본적으로 Eloquent 는 strtolower$attributes 을 Carbon 인 스 턴 스 로 변환 합 니 다. 이 인 스 턴 스 는 여러 가지 유용 한 방법 을 제공 할 수 있 으 며, 원생 PHP created_at 클래스 를 계승 할 수 있 습 니 다.
어떤 필드 를 자동 으로 변환 할 수 있 는 지 사용자 정의 할 수 있 습 니 다. 심지어 이러한 변환 을 완전히 사용 하지 않 습 니 다. 모델 에 복사 updated_at 속성 이 필요 합 니 다.

날짜 로 여 겨 질 때 UNIX 시간 스탬프, 날짜 문자열 DataTime, 시간 문자열, $dates / Y-m-d 인 스 턴 스 로 설정 할 수 있 으 며 날짜 값 은 자동 으로 데이터베이스 에 올 바 르 게 저 장 됩 니 다.
$user = App\User::find(1);

$user->deleted_at = Carbon::now();

$user->save();

위 에서 말 한 바 와 같이 획득 한 속성 이 DateTime 속성 이 열거 한 값 일 때 자동 으로 Carbon 인 스 턴 스 로 전 환 됩 니 다. 이것 은 속성 적 으로 Carbon 의 일부 방법 을 사용 할 수 있 습 니 다.
$user = App\User::find(1);

return $user->deleted_at->getTimestamp();

기본적으로 시간 스탬프 는 $dates 형식 으로 포맷 되 었 습 니 다.시간 스탬프 의 형식 을 사용자 정의 하려 면 모델 에 속성 Carbon 을 설정 해 야 합 니 다.이 속성 은 날짜 속성 이 데이터베이스 에 어떻게 저장 되 는 지, 모델 이 직렬 화 되 거나 JSON 화 될 때 어떻게 보 여 주 는 지 확인 합 니 다.

속성 변환
모델 에서 속성 을 정의 할 수 있 습 니 다 Y-m-d H:i:s. 속성 을 일반적인 데이터 형식 으로 변환 하 는 데 편리 한 방법 을 제공 할 수 있 습 니 다.$dateFormat 속성 은 하나의 배열 이 어야 하고 모든 키 는 변환 이 필요 한 속성 명 이 어야 하 며 그 키 에 대응 하 는 값 은 속성 변환 이 필요 한 유형 이 어야 합 니 다.지원 하 는 전환 유형 은 $casts, $casts, integer, real, float, double, string, boolean, object, array, coolectiondate 입 니 다.
예 를 들 어 우 리 는 datetime 속성 을 바 꾸 고 데이터베이스 에 저 장 된 값 을 하나의 정형 timestamp 또는 is_admin 으로 바 꿉 니 다. 우 리 는 이 를 불 값 으로 바 꿉 니 다.
 'boolean',
  ];
}

현재, 당신 이 0 속성 에 접근 할 때마다 그 값 은 불 값 으로 변 환 됩 니 다. 설령 데이터베이스 에 저 장 된 정형 값 이 라 하 더 라 도:
$user = App\User::find(1);

if ($user->is_admin) {
  //
}

배열 변환1 변 환 된 유형 은 JSON 값 을 직렬 화 하 는 열 을 저장 하 는 데 특히 유용 하 다.예 를 들 어 데이터베이스 에 is_admin 형식의 필드 가 있 고 직렬 화 된 JSON 이 저 장 됩 니 다. 이 속성 array 변환 을 추가 하면 Eloquent 모델 에서 이 속성 에 접근 하면 자동 으로 반 직렬 화 됩 니 다.
 'array'
  ];
}

전의 정의 가 완료 되면 TEXT 속성 에 접근 할 수 있 으 며, JSON 에서 PHP 배열 로 자동 으로 정렬 됩 니 다.array 속성 에 값 을 설정 하면 주어진 배열 은 자동 으로 JSON 형식 으로 정렬 되 어 저 장 됩 니 다.
$user = App\User::find(1);

$options = $user->options;

$options['key'] = 'value';

$user->options = $options;

$user->save();

좋은 웹페이지 즐겨찾기