it-swarm.com.de

Wie verwende ich die Datenbank ZWISCHEN der Abfrage?

Ich muss die Datenbankeinträge für ein bestimmtes Datum mithilfe einer Datenbankabfrage abrufen. Ich habe versucht, einige Abfragen abzurufen, aber es werden alle Datensätze in der Tabelle angezeigt.

controller.php

public static function load($entry = array()){
$maxDate = \Drupal::request()->query->get('set_start_date');
$minDate = \Drupal::request()->query->get('set_end_date');
 $select = db_select('pastpayments', 'x');
 $select->fields('x');
 foreach ($entry as $field => $value) {
 $select->condition('paiddate', $maxDate, "<=");
 $select->condition('paiddate', $minDate, ">=");
}
 return $select->execute()->fetchAll();
}  

public function entryList() {
$content = array();

$content['message'] = array(
  '#markup' => $this->t('Generate a list of all entries in the database. There is no filter in the query.'),
);

$rows = array();
$headers = array(t('Member Id'), t('Name'), t('Paid Date'), t('Paid Date'));

foreach ($entries = $this->load() as $entry) {
  // Sanitize each entry.
  $rows[] = array_map('Drupal\Component\Utility\SafeMarkup::checkPlain', (array) $entry);
}
$content['table'] = array(
  '#type' => 'table',
  '#header' => $headers,
  '#rows' => $rows,
  '#empty' => t('No entries available.'),
);
// Don't cache this page.
$content['#cache']['max-age'] = 0;

return $content;

} all records

wie kann ich die Tabellendatensätze für bestimmte Datumsbereiche abrufen?

Datenbankabfrage

mysql> select * from pastpayments where paiddate >='2017/03/01' and paiddate <='2017/03/30';
3
vijoy

Meine Antwort

public static function load($entry = array()) {
  $maxDate = \Drupal::request()->query->get('set_start_date');
  $minDate = \Drupal::request()->query->get('set_end_date');

 $select = db_select('pastpayments', 'x');
 $select->fields('x');
 $select->condition('paiddate', array($maxDate, $minDate), 'BETWEEN');
     $ans=$select->execute()->fetchAll();
     return $ans;

}}

1
vijoy

Sie können ZWISCHEN folgendermaßen verwenden:

$query->condition('myfield', array(5, 10), 'BETWEEN');

In Ihrem Fall:

$query->condition('paiddate', array('2017/03/01', '2017/03/30'), 'BETWEEN');

Weitere Informationen finden Sie in der Dokumentation Bedingte Klauseln .

Es hängt davon ab, wie Ihre Daten gespeichert sind und welche Min- und Max-Werte Sie übergeben sollten.

Zum Beispiel könnte es ein Unix-Zeitstempel oder ein tatsächliches Datum sein. Ich würde empfehlen, die Daten allgemeiner auszuwählen, um das Format der Daten zu ermitteln, und dieses Format dann in den von Ihnen übergebenen Werten zu replizieren.

5
rooby