如何解决Laravel:从包含找到记录的变量中获取相关的子记录
我正在尝试设置一些过滤器选项:一个用于联系人姓名,将在联系人表上运行; /另一个用于日期范围的过滤器,将在Sale
表(created_at
列)上运行。
将请求输入存储到变量中后,我将执行以下操作:
$contacts = Contact::where('first_name','like','%'.$name.'%')
->orWhere('last_name','%'.$name.'%')->get();
然后我在这样的日期范围内搜索Sale
条记录:
$sales = Sale::whereBetween('created_at',[$fromDate,$toDate])->get();
然后我有这个:
$data = [];
foreach ($contacts as $contact) {
$data[] = [
'contact' => $contact->first_name . " " . $contact->last_name,'sale' => $contact->sales->sum('amount_spend'),'people'=>$contact->sales->sum('people_with')
];
}
dd($data);
我想要的是为$contacts
上的每个联系人查找相关sale::amount_spend
的总和,但是我希望它在$sales
变量(找到的集合)中查找相关的销售记录,不是所有的桌子。
任何需要帮助的人,
解决方法
$data = Contact::with([
'sales'=> function ($query) use($fromDate,$toDate){
$query->whereBetween('created_at',[$fromDate,$toDate]);
}])
->where('first_name','like','%'.$name.'%')
->orWhere('last_name','%'.$name.'%')
->get()
->map(function($item){
return [
'contact' => $item->first_name . " " . $item->last_name,'sale' => $item->sales->sum('amount_spend'),'people'=>$item->sales->sum('people_with')
];
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。