【发布时间】:2018-11-30 04:37:31
【问题描述】:
所以,我已经为此苦苦挣扎了一段时间,但我无法让它做我需要它做的事情。
我希望能够将一组值作为 Json 存储在我们的数据库中,但无论如何我都无法获得 Laravel 或首先正确格式化对象。
我有三个查询,一个获取用户的用户名和他们的名字,作为一个对象。另外两个使用该对象通过 count() 从我们的数据库中获取每个用户的销售和报价计数。
现在我需要的只是要组合的对象。
array:1 [
"" => array:3 [
0 => array:7 [
0 => array:2 [
"CallCentreID" => "sdickerson"
"FirstName" => "Sarah"
]
1 => array:2 [
"CallCentreID" => "wjones"
"FirstName" => "Wendy"
]
2 => array:2 [
"CallCentreID" => "aknox"
"FirstName" => "Alex"
]
3 => array:2 [
"CallCentreID" => "mking"
"FirstName" => "Melissa"
]
4 => array:2 [
"CallCentreID" => "nrowecc"
"FirstName" => "Neil"
]
5 => array:2 [
"CallCentreID" => "ejones"
"FirstName" => "Emma"
]
6 => array:2 [
"CallCentreID" => "spurnell2"
"FirstName" => "Simon"
]
]
1 => array:5 [
0 => array:2 [
"CallCentreID" => "aknox"
"Sales" => 1169
]
1 => array:2 [
"CallCentreID" => "ejones"
"Sales" => 401
]
2 => array:2 [
"CallCentreID" => "mking"
"Sales" => 767
]
3 => array:2 [
"CallCentreID" => "sdickerson"
"Sales" => 1067
]
4 => array:2 [
"CallCentreID" => "wjones"
"Sales" => 716
]
]
2 => array:6 [
0 => array:2 [
"CallCentreID" => "aknox"
"Quotes" => 3587
]
1 => array:2 [
"CallCentreID" => "ejones"
"Quotes" => 400
]
2 => array:2 [
"CallCentreID" => "mking"
"Quotes" => 6975
]
3 => array:2 [
"CallCentreID" => "nrowecc"
"Quotes" => 3
]
4 => array:2 [
"CallCentreID" => "sdickerson"
"Quotes" => 2686
]
5 => array:2 [
"CallCentreID" => "wjones"
"Quotes" => 2734
]
]
]
]
以上内容与我所拥有的代码一样接近;
$Users = User::where('Accesslevel', 'laravelcallcentre')->select('EmailAddress as CallCentreID', 'FirstName')->get();
$Sales = Order::groupBy('CallCentreID')
// ->whereDate('OrderDate', '=', date('2018-06-21'))
->whereIn('CallCentreID', $Users->pluck('CallCentreID'))
->where('Status', 'BOOKING')
->selectRaw('CallCentreID, count( * ) AS Sales')
->get();
$Quotes = Order::groupBy('CallCentreID')
// ->whereDate('OrderDate', '=', date('2018-06-21'))
->whereIn('CallCentreID', $Users->pluck('CallCentreID'))
->where('Status', 'QUOTE')
->selectRaw('CallCentreID, count( * ) AS Quotes')
->get();
$collection = collect([$Users, $Sales, $Quotes]);
$CCData = $collection->groupBy('CallCentreID');
有人有更好的想法吗?我觉得我做这完全错了。我把它写成一个 foreach 循环,但最终每个用户都有四个查询,堆积得很快。
【问题讨论】:
-
"Now All I need is the objects to be combined" 是什么意思?你能举例说明你想要的输出应该是什么。至于您的查询,您不能使用雄辩的关系来加载用户的销售和报价吗?您可以使用 withCount 帮助程序,这样您就不必实际加载所有关系而只获取计数。
-
我希望最终对象显示类似.. 0 => array:2 [ "CallCentreID" => "sdickerson" "FirstName" => "Sarah" "Sales" => 529 “行情” => 892]
标签: laravel laravel-5 laravel-5.2