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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...