所以我有一张包含以下内容的表格:
我想使用Kohana ORM从交易时间戳中获取不同的日期
我有一个名为Model_Transactions
如果我这样做
Model_Transactions::factory('transactions')->find_all();
我得到所有数据。我将如何只获得不同的日期,因为我将它用作存档。我不希望用户单击存档并返回一个空白表。
例如:用户点击“2012年4月1日”,因为4月01日没有交易,有一张空白表,我想避开那些情景,怎么样?
答案 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();