0
所以我在這個時候有一個& * ^%的時間。我已經做了一些挖掘,並且我似乎無法找到正確的(或可能的)方法來完成我正在尋找的。帶追加功能和傳遞參數的Laravel模型
有點背景故事。我已經寫了這個查詢來直接與nv3d圖形庫集成,因此爲什麼數據結構對我來說如此重要以及正確地確定日期的範圍。
首先我們有一個「產品」的模型查詢,這創建了一個很好的有序列表,標題和顏色。
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)
我仍然不明白如何我可以通過該值21(或任何值)從以前的產品::查詢通過該特定功能,這是我真正的問題。謝謝你! –