Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带join的Sum函数给出的Sum是laravel ORM和mysql中条目数的乘积_Php_Mysql_Sql_Laravel_Join - Fatal编程技术网

Php 带join的Sum函数给出的Sum是laravel ORM和mysql中条目数的乘积

Php 带join的Sum函数给出的Sum是laravel ORM和mysql中条目数的乘积,php,mysql,sql,laravel,join,Php,Mysql,Sql,Laravel,Join,有两个表账单和付款,总销售额插入订单表,收入插入付款表。我想显示过去7天的总销售额和总现金收入,但我的查询结果乘以了laravel中同一日期数据的次数 表账单: 表付款: 我想获取过去七天中每天的总金额,其中bills.created\u date=payments.created\u date。我的查询运行良好,但它会将总和乘以特定日期的条目 我的问题(拉拉维尔): 我的预期结果: array:2 [▼ 0 => {#254 ▼ +"date": "2019-03-11"

有两个表<代码>账单和付款,总销售额插入订单表,收入插入付款表。我想显示过去7天的总销售额和总现金收入,但我的查询结果乘以了laravel中同一日期数据的次数

账单

付款

我想获取过去七天中每天的总金额,其中
bills.created\u date=payments.created\u date
。我的查询运行良好,但它会将总和乘以特定日期的条目

我的问题(拉拉维尔):

我的预期结果:

array:2 [▼
  0 => {#254 ▼
    +"date": "2019-03-11"
    +"total_revenue": 5.0
    +"total_sales": 5.0
  }
  1 => {#255 ▼
    +"date": "2019-03-12"
    +"total_revenue": 1500.0
    +"total_sales": 1500.0
  }
]
我的输出:

array:2 [▼
  0 => {#254 ▼
    +"date": "2019-03-11"
    +"total_revenue": 5.0
    +"total_sales": 5.0
  }
  1 => {#255 ▼
    +"date": "2019-03-12"
    +"total_revenue": 4500.0
    +"total_sales": 4500.0
  }
]
但这段代码在不使用join从单个表中获取数据的情况下工作得非常好。 比如:

输出:

array:2 [▼
  0 => {#259 ▼
    +"date": "2019-03-11"
    +"total_sales": 5.0
  }
  1 => {#260 ▼
    +"date": "2019-03-12"
    +"total_sales": 1500.0
  }
]

问题来自您的加入条件:

DB::table('bills')
->Join(
    'payments', 
    DB::raw('DATE(payments.created_at)'), 
    '=', 
    DB::raw('DATE(bills.created_at)')
)
您将删除日期的时间部分,然后加入:因此,对于每个
账单
,您将得到多个匹配的
付款

从您的示例数据来看,我认为它类似于列
付款。bill_id
用于加入:

DB::table('bills')
->Join(
    'payments', 
    DB::raw('payments.bill_id'), 
    '=', 
    DB::raw('bills.id')
)
DB::table('bills')
->Join(
    'payments', 
    DB::raw('DATE(payments.created_at)'), 
    '=', 
    DB::raw('DATE(bills.created_at)')
)
DB::table('bills')
->Join(
    'payments', 
    DB::raw('payments.bill_id'), 
    '=', 
    DB::raw('bills.id')
)