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')
            ];
        });