get~Attribue는 데이터에 처리를 더하는 메소드입니다.
예를 들면, 「1」이라고 하는 데이터를 3자리수로 「001」이라고 하는 것처럼 0을 메워 표시시키고 싶을 때나, 「2022-02-10 10:00」이라고 하는 데이터를 「2022-02-10」의 형식 로 변경하고 싶은 경우 등, 데이타베이스상의 데이터의 형태를 바꾸어 표시시키는 사용법이 가능합니다.
get~Attribute를 사용해 데이터를 취득하려면 Model 파일로 Attribute 정의를 기술해 View측(Blade)에서 Attribute로 정의한 메소드를 Controller 파일로 Model 인스턴스로 취득한 데이터의 변수를 통해서 표시시키는 흐름이 됩니다.
간단한 예로, 데이터베이스로부터 취득한 ID의 번호 1,2,3을3자리수로 만들어 0을 붙여 표시해 보겠습니다.
ID | Data |
---|---|
1 | |
2 | |
3 |
app/Models/Test.php
public function getZeroPaddingIdAttribute()
{
$id = sprintf('%03d',$this->id);
return $id;
}
function에서 메소드 이름을 정의합니다.
세 번째 줄에서 sprinf 함수를 사용하고 있습니다. spritf에 대해서는 여기에서는 상세히 설명하지 않지만 지정한 포맷을 만들 수 있는 편리한 함수입니다. (제1 인수에 %0 자리수 d)(제2 인수에 0 채우고 싶은 숫자)를 맞추는 것으로, 0 추가를 실현할 수 있습니다.
resources/view/test.blade.php
@foreach ( $records as $rec)
{{ $rec->zero_padding_id }}
@endforeach
블레이드에서는 메소드명을 카멜 케이스로 변환하여 기술하고 있습니다.
표시 결과
001002003
id를 3자리 표시의 0으로 채울 수 있습니다.