Kohana 3.2 - 我希望得到截然不同的日期

时间:2012-04-03 22:53:54

标签: php kohana kohana-orm kohana-3.2

所以我有一张包含以下内容的表格:

  1. ID
  2. transaction_timestamp(TIMESTAMP CURRENT_TIMESTAMP)
  3. 我想使用Kohana ORM从交易时间戳中获取不同的日期 我有一个名为Model_Transactions

    的模型

    如果我这样做

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

    我得到所有数据。我将如何只获得不同的日期,因为我将它用作存档。我不希望用户单击存档并返回一个空白表。

    例如:用户点击“2012年4月1日”,因为4月01日没有交易,有一张空白表,我想避开那些情景,怎么样?

1 个答案:

答案 0 :(得分: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();