Extbase — это популярная платформа PHP, используемая в TYPO3, системе управления контентом. При работе с Extbase получение даты создания записи может быть распространенным требованием. В этой статье мы рассмотрим несколько методов решения этой задачи, а также приведем примеры кода.
Метод 1: использование поля «tstamp».
Один из самых простых способов получить дату создания в Extbase — использовать поле «tstamp». Это поле представляет собой временную метку UNIX, когда запись была создана или обновлена. Чтобы получить дату создания с помощью этого метода, вы можете использовать следующий фрагмент кода:
$record = // Retrieving the Extbase record here
$creationDate = \DateTime::createFromFormat('U', $record->getTstamp())->format('Y-m-d H:i:s');
Метод 2: использование поля «crdate».
Другой метод предполагает использование поля «crdate», в котором конкретно хранится дата создания записи. Вот пример того, как можно получить дату создания, используя этот подход:
$record = // Retrieving the Extbase record here
$creationDate = \DateTime::createFromFormat('U', $record->getCrdate())->format('Y-m-d H:i:s');
Метод 3: доступ к полю «sys_language_uid».
Если вам нужно получить дату создания, учитывая язык записи, вы можете объединить поле «crdate» с полем «sys_language_uid». Этот метод позволяет получить дату создания конкретной языковой версии. Вот пример фрагмента кода:
$record = // Retrieving the Extbase record here
$languageUid = // Language UID of the desired language version
$creationDate = \DateTime::createFromFormat('U', $record->getCrdate($languageUid))->format('Y-m-d H:i:s');
Метод 4: реализация настраиваемого метода репозитория
В некоторых случаях может потребоваться инкапсулировать логику получения даты создания в настраиваемом методе репозитория. Этот подход обеспечивает централизованный и многоразовый способ получения даты создания. Вот пример того, как этого можно добиться:
class MyRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
public function findCreationDateById($id)
{
$query = $this->createQuery();
$query->statement('SELECT crdate FROM tx_myextension_domain_model_myrecord WHERE uid = ' . (int)$id);
$result = $query->execute();
$row = $result->fetch();
if ($row) {
return \DateTime::createFromFormat('U', $row['crdate'])->format('Y-m-d H:i:s');
}
return null;
}
}
Получить дату создания в Extbase можно различными методами. Независимо от того, решите ли вы использовать поле «tstamp», поле «crdate» или создать собственные методы репозитория, примеры, представленные в этой статье, помогут вам получить нужную информацию. Не забудьте адаптировать и изменить фрагменты кода в соответствии с вашим конкретным вариантом использования.