it-swarm.com.de

Wo wird der vom Knoten erstellte Zeitstempel in der Datenbank gespeichert?

Ich muss eine SQL-Abfrage erstellen, die alle Knoten eines bestimmten Typs findet, die vor X Tagen erstellt wurden, damit ich ihre IDs abrufen kann. Aufgrund der großen Anzahl von Knoten in der Datenbank würde ich lieber eine direkte SQL-Abfrage als entityQuery verwenden. Ich wurde gewarnt, dass entityQuery langsam sein kann, wenn mit großen Datenmengen gearbeitet wird.

Wie auch immer, ich muss herausfinden, wo der vom Knoten erstellte Zeitstempel in der Datenbank gespeichert ist. In Drupal 7) wird es direkt in der Knotentabelle gespeichert, jedoch nicht in Drupal 8).

1
Casso

Das Erstellungsdatum wird in der Tabelle node_field_data Als UNIX-Zeitstempel in einer Spalte mit dem Namen created gespeichert.

Hier ist der Code, mit dem Sie die vor X Tagen erstellten Knoten mithilfe einer direkten Auswahlabfrage abrufen würden.

$day = 86400; // One day in seconds.
$days = 3; // The amount of days ago to fetch from.

$nids = \Drupal::database()->select('node_field_data', 'n')
  ->addField('n', 'nid')
  ->condition('n.created', \Drupal::time()->getCurrentTime() - $days * $day, '>')
  ->execute()
  ->fetchField();

$nodes = \Drupal::entityTypeManager()->getStorage('node')->loadMultiple($nids);

Stellen Sie sicher, dass Sie die Dienste database und entity_type.manager (Wenn möglich) einfügen, wenn Sie den Code selbst implementieren.

7
user72672

Wenn Sie in Ihre Drupal -Datenbank gehen), sollten Sie eine Tabelle mit dem Namen 'node_field_data' finden. In dieser Tabelle befindet sich eine Spalte mit der Bezeichnung 'created'. Dies ist Ihr Unix-Zeitstempel für die Erstellung des Knotens .

3
mrlexington