가상 필드를 캐시하는 방법이 있습니까? 엔티티가 캐시에서 검색 되더라도 필요할 때마다 가상 필드가 생성된다는 사실을 알기 때문에 해당 엔티티가 속한 엔티티와 자동으로 연결된다는 의미입니다. CakePHP 3.4 : 가상 필드를 캐시하는 방법
은 물론 나는 개인적으로 처리하므로 (예) 걸릴 수 있습니다 알고protected function _getFullName()
{
$fullName = Cache::read('full_name_for_' . $this->_properties['id'], 'users');
if (empty($fullName)) {
$fullName = $this->_properties['first_name'] . ' ' . $this->_properties['last_name'];
Cache::write('full_name_for_' . $this->_properties['id'], $fullName, 'users');
}
return $fullName;
}
을하지만 CakePHP는 바로 그것을 할 수있는 사실 알고 싶었다.
편집
상황.
Post
엔티티는 text
속성을가집니다. text
은 원격 (심지어 HTML 코드로) 이미지를 포함 할 수 있습니다. 이제 어딘가에을 텍스트에 포함 된 첫 번째 이미지의 URL과 크기를 저장해야합니다. 그래서 나는 정규식을 사용하는 first_image
가상 필드를 만들었습니다. 문제는 이미지 크기와 관련이 있습니다. getimagesize()
기능을 실행할 때마다, 특히 이미지가 원격 인 경우 쉽게 실행할 수 있습니다. 이유는 쉽게 이해할 수 있기 때문입니다. 그렇게하는 방법?
Ok @burzum. 'Post' 엔티티는'text' 속성을 가지고 있습니다. '텍스트'는 이미지를 포함 할 수 있습니다 (HTML 코드처럼), 심지어 원격. 이제는 "텍스트"와 그 크기에 포함 된 첫 번째 이미지의 URL *을 어딘가에 저장해야합니다. 그래서 나는 정규식을 사용하는'first_image' 가상 필드를 만들었습니다. 문제는 이미지 크기와 관련이 있습니다. 특히 이미지가 원격 인 경우 'getimagesize()'함수를 실행할 때마다이를 수행 할 수 없습니다. 이유는 쉽게 이해할 수 있기 때문입니다. 그렇게하는 방법? –
코드의 변경된 컨텍스트 –
beforeSave() 콜백에서 이러한 종류의 처리 만 수행하면됩니다. book.cakephp.org에서 사용 방법을 확인하십시오. 상점에 정보를 추출하십시오. 다음에 뭔가를 물어 보면 현명한 문제가 아닌 다른 문제가 생길 수도 있습니다. ;) – burzum