所以,我有一个&*^%的时间与这一次。我做了一些调查,但我似乎找不到正确的(或可能的)方法来完成我想要的事情。
一些背景故事。我编写这个查询是为了直接与nv3d图形库集成,这就是为什么数据结构对我来说如此重要,以及如何正确地限定数据的范围。
首先,我们有一个模型查询“产品”,这创建了一个很好的有序列表与id,标题和颜色。
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)第一步:很好!
接下来,在产品模型中,我将向每个产品添加日期/值。这就是问题所在。
如何将参数传递给这个辅助查询,如日期计数、范围等?!
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)发布于 2016-07-29 20:56:56
我想你是想找个了结。没有测试它,但是应该给你一个想法:
$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')
));https://stackoverflow.com/questions/38665832
复制相似问题