mysql - Laravel 5.3 上的左连接查询

标签 mysql laravel

我的 mySQL 有一个这样的查询

select p.tgl_pesan, COALESCE(SUM(dp.jumlah), 0) as jumlah 
FROM pemesanan p 
LEFT JOIN detail_pemesanan dp ON p.id_pemesanan = dp.id_pemesanan 
WHERE p.tgl_pesan >= DATE_ADD(NOW(), INTERVAL -6 day) 
GROUP BY p.tgl_pesan

我尝试将该查询应用到我的 Laravel 项目中,如下所示

$data = DB::table('detail_pemesanan')
      ->leftJoin('pemesanan', 'detail_pemesanan.id_pemesanan', '=', 'pemesanan.id_pemesanan')
      ->select('pemesanan.tgl_pesan as tgl_pesan', DB::raw('SUM(detail_pemesanan.jumlah) as jumlah'))
      ->where('tgl_pesan', '>=', 'DATE_ADD(NOW(), INTERVAL -6 DAY)')
      ->groupBy('pemesanan.tgl_pesan')
      ->get();

但这两者都显示出不同的结果。我的 Laravel 项目的结果显示了意外的数据,就像 mySQL 一样,它显示了我的时间间隔中的更多数据。我对 Laravel 项目的查询有什么问题吗?非常感谢

最佳答案

你的sql查询将是:

 $data = DB::table('pemesanan as p')
      ->select('p.tgl_pesan', DB::raw('SUM(dp.jumlah) as jumlah'))
      ->leftJoin('detail_pemesanan as dp', 'p.id_pemesanan', '=', 
     'dp.id_pemesanan')
      ->whereRaw('p.tgl_pesan  >= DATE_ADD(NOW(), INTERVAL -6 DAY)')
      ->groupBy('p.tgl_pesan')
      ->get();

关于mysql - Laravel 5.3 上的左连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013615/

相关文章:

laravel - 查找过去 24 小时内帖子最高的用户,laravel Eloquent

laravel - 在 Laravel 中嵌套共享子资源

php - 拉维尔 | Eloquent 地填充外国数据

mysql - 显示两个表中的数据,但第二个表的数据比第一个表多

javascript - Laravel ajax 无法正常运行

laravel - 结合 Laravel 和 Create-React-App

php - 使用 Nginx 设置 Laravel

MySQL - 从交易表中找出产品的数量并将结果放入另一个表中

php - 如何从两个不同的表中获取字段并使用 WHERE 检查值?

MySQL/PHP : cannot perform two separate queries on same database?