所以我有一个& * ^%的时间用这个。我已经做了一些挖掘,我似乎无法找到正确(或可能)的方式来完成我正在寻找的东西。
有点背景故事。我已将此查询编写为直接与nv3d图库集成,因此数据结构对我来说如此重要以及正确确定日期范围的原因。
首先我们对" Products"进行了模型查询,这为我创建了一个包含id,title和color的漂亮有序列表。
Product::whereCuId(auth()->user()->cu_id)
->whereCategoryId($id)
->orderBy('sort_order', 'ASC')
->select('id as id','title AS key', 'color AS color')
->get();
返回以下内容。
{
"id": 1,
"key": "Title 1",
"color": "#ffbd13",
}
{
"id": 2,
"key": "Title 2",
"color": "#8f8f8f"
}
(etc)
第一步:太棒了!
接下来在Product模型中,我将日期/值附加到每个产品。这就是问题所在。
如何将参数传递给此次要查询,如日期计数,范围等?!
protected $appends = array('values');
public function getValuesAttribute() {
return $values=Checkin::whereProductId($this->id)
->groupBy('date')
->orderBy('date', 'ASC')
->whereRaw('Date(created_at) > CURDATE() - INTERVAL 21 day')
->get(array(
DB::raw('1000*UNIX_TIMESTAMP(Date(created_at)) as date'),
DB::raw('COUNT(id) as total')
));
}
现在很明显我可以使用目前上述查询中的类似内容......
->whereRaw('Date(created_at) > CURDATE() - INTERVAL 21 day')
但是我怎样才能将参数从初始控制器(调用产品模型)传递到模型内的子函数中,并说...设置上面的" 21"我传入的变量?
先谢谢大家的帮助!!!
这是数据格式的最终目标,因为它目前存在(无法更改天数),仅作为示例包含在内。
{
"id": 1,
"key": "Title 1",
"color": "#ffbd13",
"values": [
{
"date": 1468047600000,
"total": 4
},
{
"date": 1468134000000,
"total": 1
},
{
"date": 1468220400000,
"total": 1
},
{
"date": 1468306800000,
"total": 2
}]
}
{
"id": 2,
"key": "Title 2",
"color": "#8f8f8f"
}
(etc)
答案 0 :(得分:0)
我猜你在寻找关闭。没有测试,但应该给你的想法:
$yourVar = 21;
$values=Checkin::whereProductId($this->id)
->groupBy('date')
->orderBy('date', 'ASC')
->where(function ($query) use ($yourVar) {
$query->whereRaw('Date(created_at) > CURDATE() - INTERVAL '.$yourVar.' day'));
})
->get(array(
DB::raw('1000*UNIX_TIMESTAMP(Date(created_at)) as date'),
DB::raw('COUNT(id) as total')
));