【发布时间】:2017-01-25 22:10:47
【问题描述】:
我有一个 mySQL 数据库,它有一个表 videos 和两列 start_time 和 end_time,格式为 2017-01-24 15:38:11.
我有一个扩展 \yii\db\ActiveRecord 的活动记录模型 Videos,我想添加一些不在数据库中的附加属性。
我正在尝试将时间戳拆分为单独的日期和时间,然后我可以在我的 gridview 小部件中显示为列。我通过直接在视图中将列值设置为类似这样的函数成功地做到了这一点......
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' =>
[
[
'class' => '\kartik\grid\DataColumn',
'attribute' => 'videodate',
'value' => function($model)
{
$datetime = new DateTime('start_time');
$date = $datetime->format('Y-m-d');
return $date;
},
],
],
'responsive'=>true,
'hover'=>true
]); ?>
但这并不理想,因为我希望能够在我的 videoSearch 模型中使用日期和时间作为属性进行过滤和排序。
根据我的研究,我已在我的 rules() 和 attributeLabel() 函数中将属性添加到 Video 模型中,但是我不确定如何设置该值。我最初的想法是像关系一样做......
public function getVideodate(){
$datetime = new DateTime('start_time');
$date = $datetime->format('Y-m-d');
return $date;
}
但是,这不会产生预期的结果。我想如果我可以在模型中定义和设置它,那么将它添加到搜索模型应该很简单,因为我的临时解决方案(在视图中)使这显着复杂化。
我打算在他改进的 gridview 小部件上使用 kartik 的日期范围和时间过滤器。提前谢谢,请让我知道我还可以包括什么。
尼克
【问题讨论】:
标签: php activerecord yii2