0

だから私は次のテーブルを持っています:

  1. ID
  2. transaction_timestamp (TIMESTAMP CURRENT_TIMESTAMP)

Kohana ORM を使用して、トランザクションのタイムスタンプから個別の日付を取得したいと考えています。Model_Transactions

私がこれをしたら

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

私はすべてのデータを取得します。アーカイブとして使用するので、どうすれば明確な日付だけを取得できますか。ユーザーがアーカイブをクリックして空白のテーブルを返すことを望んでいません。

例: ユーザーが「2012 年 4 月 1 日」をクリックすると、4 月 1 日に取引がなく、空白のテーブルが表示されます。これらのシナリオを回避したいのですが、どうすればよいですか?

4

1 に答える 1

6

ORM モデルは、テーブル内の単一のエントリを表す必要があります。ORM find_all() を使用すると、テーブル内のすべての属性を選択する必要があります。ID は一意である必要があるため、各行は本質的に異なります。

個別の transaction_timestamp 値のリストを取得したいだけの場合は、それを取得するメソッドをモデルに追加できます。何かのようなもの:

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

次に、次を使用できます。

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

もちろんこれはほんの一例です。配列を返したくない場合があります。ただし、ORM クエリ メソッドの使用に限定されるわけではありません。

個別の transaction_timestamp を持つ ORM オブジェクトを取得する別のオプションは、次のとおりです。

Model_Transactions::factory('transactions')
    ->group_by('transaction_timestamp')
    ->find_all();
于 2012-04-04T00:16:53.340 に答える