Laravel:从包含已找到记录的变量中获取相关子记录
Laravel : Get Related Child Records From A variable containing Found Records
我正在尝试设置一些过滤器选项:一个用于联系人姓名,将在联系人 table/ 上运行,另一个用于日期范围的过滤器,将在 Sale
[=32= 上运行](created_at
列)。
将请求输入存储到变量后,我这样做:
$contacts = Contact::where('first_name', 'like', '%'.$name.'%')
->orWhere('last_name', 'like', '%'.$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
变量(搜索结果集)中查找相关销售记录) 而不是所有 table.
任何帮助,
$data = Contact::with([
'sales'=> function ($query) use($fromDate, $toDate){
$query->whereBetween('created_at', [$fromDate, $toDate]);
}])
->where('first_name', 'like', '%'.$name.'%')
->orWhere('last_name', 'like', '%'.$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')
];
});
我正在尝试设置一些过滤器选项:一个用于联系人姓名,将在联系人 table/ 上运行,另一个用于日期范围的过滤器,将在 Sale
[=32= 上运行](created_at
列)。
将请求输入存储到变量后,我这样做:
$contacts = Contact::where('first_name', 'like', '%'.$name.'%')
->orWhere('last_name', 'like', '%'.$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
变量(搜索结果集)中查找相关销售记录) 而不是所有 table.
任何帮助,
$data = Contact::with([
'sales'=> function ($query) use($fromDate, $toDate){
$query->whereBetween('created_at', [$fromDate, $toDate]);
}])
->where('first_name', 'like', '%'.$name.'%')
->orWhere('last_name', 'like', '%'.$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')
];
});