2012-04-03 12 views
0

bekommen, so habe ich eine Tabelle mit den folgenden:Kohana 3.2 - Ich möchte verschiedene Termine

  1. id
  2. transaction_timestamp (timestamp CURRENT_TIMESTAMP)

i aus verschiedenen Terminen erhalten möchten die Transaktion Zeitstempel mit Kohana ORM Ich habe ein Modell mit dem Namen Model_Transactions

wenn ich dies tun

Model_Transactions::factory('transactions')->find_all(); 

ich bekomme alle Daten. Wie würde ich nur die eindeutigen Daten bekommen, da ich es als Archiv verwenden würde? Ich möchte nicht, dass der Benutzer auf ein Archiv klickt und eine leere Tabelle zurückgibt.

zum Beispiel: Benutzer klickt "01. April 2012" da es keine Transaktion am 01. April gibt, gibt es eine leere Tabelle, ich möchte diese Szenarien vermeiden, wie?

Antwort

6

ORM-Modelle sollten einen einzelnen Eintrag in Ihrer Tabelle darstellen. Mit dem ORM find_all() will es alle Attribute in der Tabelle auswählen. Da Ihre ID eindeutig sein sollte, ist jede Zeile im Wesentlichen unterschiedlich.

Wenn Sie nur eine Liste der verschiedenen transaction_timestamp-Werte abrufen möchten, können Sie Ihrem Modell eine Methode hinzufügen, um genau das zu erhalten. Etwas wie:

public function get_distinct_timestamps() 
{ 
    return DB::select('transaction_timestamp') 
      ->from($this->_table_name) 
      ->distinct('transaction_timestamp') 
      ->execute() 
      ->as_array(); 
} 

Dann können Sie verwenden:

$timestamps = Model::factory('transactions')->get_distinct_timestamps(); 
foreach($timestamps as $timestamp) 
{ 
    $value = $timestamp['transaction_timestamp']; 
} 

Natürlich ist dies nur ein Beispiel. Sie möchten vielleicht kein Array zurückgeben. Sie sind jedoch nicht auf die Verwendung der ORM-Abfragemethoden beschränkt.

Eine weitere Option ORM erhalten Objekte mit unterschiedlichen transaction_timestamp zu sind:

Model_Transactions::factory('transactions') 
    ->group_by('transaction_timestamp') 
    ->find_all();