Wie füge ich automatisch die Uhrzeit in InstallSchema magento2 hinzu?

9

in InstallSchema

        ->addColumn(
            'created_at',
            \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
            [],
            'Creation Time'
        )
        ->addColumn(
            'updated_at',
            \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
            [],
            'Update Time'
        )          

so wie tun updated_at, create_atAuto Add Datetime , wenn Aktion ausführen?

Xanka
quelle

Antworten:

23

Die von @Smartie bereitgestellte Antwort sollte funktionieren, aber Sie können dies auch auf Datenbankebene erreichen, wie dies Magento 2 für Kunden tut:

    )->addColumn(
        'created_at',
        \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
        null,
        ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT],
        'Created At'
    )->addColumn(
        'updated_at',
        \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
        null,
        ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
        'Updated At'

Dadurch werden folgende Spalten festgelegt:

`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Created At',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Updated At',
Wojtek Naruniec
quelle
@xanka Bitte markieren Sie die Antwort als akzeptiert, wenn Sie damit zufrieden sind.
Wojtek Naruniec
3

Sie müssen die Option "Standard" mit dem Wert \ Magento \ Framework \ DB \ Ddl \ Table :: TIMESTAMP_INIT hinzufügen

->addColumn(
    'created_at',
    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
    null,
    [
        'nullable' => false, 
        'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT
    ],
    'Created At'
)
KAndy
quelle
2

Sie werden innerhalb der Modelle selbst durchgeführt. Wenn beispielsweise das Wunschliste-Modell gespeichert wird, wird update_at in der beforeSave-Funktion aktualisiert.

App / Code / Magento / Wunschliste / Modell / Wunschliste.php um Zeile 252

 /**
 * Set date of last update for wishlist
 *
 * @return $this
 */
public function beforeSave()
{
    parent::beforeSave();
    $this->setUpdatedAt($this->_date->gmtDate());
    return $this;
}

Sie können etwas Ähnliches auch im Artikelmodell der Wunschliste sehen

App / Code / Magento / Wunschliste / Modell / Item.php

...
public function beforeSave()
{
    ...
    // set current date if added at data is not defined
    if (is_null($this->getAddedAt())) {
        $this->setAddedAt($this->_date->gmtDate());
    }
    ...
}
...
Smartie
quelle