0
我有2個表:返回雄辯的關係自定義格式
Services
id | name | ...
Prices
id | service_id | day | time | price
一個服務可以有許多的價格(按天在一週時間內天)。
當我試圖讓我的對象,並把它變成數組,這是現在的樣子:
$service = Service::with('prices')->find(1);
array
'id' => string '1'
'name' => string 'Test'
'prices' =>
array
0 =>
array (size=7)
'id' => string '1'
'service_id' => string '1'
'day' => string '1'
'time' => string '0'
'price' => string '50.00'
1 =>
array (size=7)
'id' => string '2'
'service_id' => string '1'
'day' => string '1'
'time' => string '1'
'price' => string '50.00'
...
我想獲得這個服務對象看起來像這樣:
array
'id' => string '1'
'name' => string 'Test'
'prices' =>
array
1 => array
'0' => '100.00'
'1' => '100.00'
...
'23' => '450.00'
2 => array
'0' => '100.00'
'1' => '100.00'
...
'23' => '450.00'
在換句話說,我希望我的關係返回包含天(1-7)的第一個數組,並且每天都是在那一天與時間(0-23)數組。
這樣做的最佳做法是什麼?
豈不是更好地利用這一任務數據庫?使用查詢範圍之類的東西..通過這種方式,我的控制器將更乾淨,所有工作都將在db上。 – 2014-09-24 13:04:09
查詢範圍用於指定...以及查詢的範圍。你想要做的是與另一種格式建立關係。所以另一種選擇是創建一個單獨的關係'pricesToArray',並以某種方式修改關係,以便以這種格式返回數據。修改關係的一個例子可以在這裏看到:http://stackoverflow.com/questions/24343738/getting-just-the-latest-value-on-a-joined-table-with-eloquent#24350807 – 2014-09-24 13:13:29
有沒有將這種新格式存儲回原始對象$ service的方法。 Like $ service-> prices =(new ModelFormatter($ service-> prices)) - > toArray(); 當我試圖將該對象傳遞給javascript或var_dump時,我發現價格屬性與數據庫是原始關係 – 2014-09-25 12:30:25