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 回答