Ich muss ein updated_at
Attribut einer benutzerdefinierten Entität speichern und wissen, welche die beste Vorgehensweise ist. Ich habe mir angesehen, wie Magento 2 damit umgeht.
Ich habe mir die \Magento\Eav\Model\Entity\Attribute\Backend\Time\Updated
Attribut-Backend-Modellklasse angesehen und hier ist der Code:
public function beforeSave($object)
{
$object->setData(
$this->getAttribute()->getAttributeCode(),
(new \DateTime())->format(\Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT)
);
return $this;
}
Mein erster Zweifel ist: Welche Zeitzone wird berücksichtigt?
Die Signatur des DateTime
Konstruktors lautet:
public DateTime::__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
Laut Konstruktordokumentation :
Wenn $ timezone weggelassen wird, wird die aktuelle Zeitzone verwendet.
Ich nehme an, dass die aktuelle Zeitzone die auf Serverebene konfigurierte ist.
Um dies zu beweisen, führen Sie einfach das folgende PHP-Snippet aus:
<?php
var_dump(new DateTime());
Das erwartete Ergebnis ist:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-05-10 12:47:11.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(11) "Europe/Rome"
}
Die Europe/Rome
Zeitzone ist die lokal auf meinem Server konfigurierte.
Aber Magento 1 wurde verwendet, um Datum und Uhrzeit gemäß GMT 0 zu speichern, um die Bestätigung zu erhalten, dass sich dieser Ansatz mit Magento 2 geändert hat. Ich habe das geöffnet \Magento\Eav\Model\Entity\Attribute\Backend\Time\Created
und hier kommt die Überraschung:
public function beforeSave($object)
{
$attributeCode = $this->getAttribute()->getAttributeCode();
if ($object->isObjectNew() && $object->getData($attributeCode) === null) {
//$object->setData($attributeCode, $this->dateTime->gmtDate());
$object->setData($attributeCode, gmdate('Y-m-d H:i:s'));
}
return $this;
}
Das created_at
Attribut für EAV-Entitäten scheint gemäß der GMT 0-Zeitzone gespeichert zu sein. Die updated_at
nach lokaler Zeitzone.
Darüber hinaus gibt es im Created
Backend-Modell zwei Ansätze , von denen einer kommentiert ist.
Meine Forschung für den besten Ansatz braucht Ihre Hilfe. Vielen Dank