Изучение методов получения даты создания в Extbase

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» или создать собственные методы репозитория, примеры, представленные в этой статье, помогут вам получить нужную информацию. Не забудьте адаптировать и изменить фрагменты кода в соответствии с вашим конкретным вариантом использования.