【问题标题】:How to convert this SQL query to Laravel Syntax?如何将此 SQL 查询转换为 Laravel 语法?
【发布时间】:2019-11-07 03:12:29
【问题描述】:

这是我的 MySQL 查询(在 phpMyAdmin 中工作):

    SELECT waktu_kerusakan, workcenter, COUNT(workcenter) AS jumlah_repair 
    FROM repair WHERE year(waktu_kerusakan)='2019'  GROUP BY workcenter , 
    month(waktu_kerusakan) BETWEEN 1 and 6 Order By jumlah_repair Desc

然后,我在 Laravel 语法中尝试如下(不起作用):

    $sql = Main::groupBy('workcenter')->select('workcenter', \DB::raw('count(*) as frekuensi'))
                ->whereYear('waktu_kerusakan', 'like',  "%".$tahun."%")
                ->OrderBy('frekuensi', 'Desc')
                ->groupBy(\DB::raw("MONTH(waktu_kerusakan)"), [1, 6])
                ->get();

请任何人帮助我将 MySQL 查询转换为 Laravel 语法。谢谢!

【问题讨论】:

  • 它会产生什么 php 错误?顺便说一句,拼写是“语法”
  • 它没有显示任何错误,但不像 MySQL Query 语法那样工作

标签: mysql sql laravel eloquent


【解决方案1】:

试试这个。

    $repair = DB::table('repair')
    ->select('waktu_kerusakan','workcenter', DB::raw('COUNT(workcenter) AS jumlah_repair'))
->whereYear('waktu_kerusakan', $tahun)
    ->groupBy(DB::raw("MONTH(waktu_kerusakan)"), 'workcenter')
  ->whereIn(DB::raw('MONTH("waktu_kerusakan")'),[1, 6])
    ->orderBy('frekuensi', 'DESC')
    ->get()

【讨论】:

  • 嗯,顺便说一句,先生,之间在哪里(在 mysql 中:“BETWEEN 1 and 6 Order By jumlah_repair Desc”?
  • 错误:Illuminate \ Database \ QueryException (42000) SQLSTATE[42000]:语法错误或访问冲突:1055 'db_portal.repair.waktu_kerusakan' 不在 GROUP BY 中(SQL:选择 waktu_kerusakan , workcenter, count(workcenter) as frekuensi from repair where year(waktu_kerusakan) like %2019% and MONTH("waktu_kerusakan") in (1, 6) group by MONTH(waktu_kerusakan), workcenter order frekuensi desc)
  • @MuhammadRobbiZulfikar 请再试一次
【解决方案2】:

试试这个查询:

$sql = Main::select('workcenter', \DB::raw('count(*) as frekuensi'),\DB::raw('MONTH(waktu_kerusakan) as waktu_kerusakan_month'))
            ->where('waktu_kerusakan',$tahun)
            ->whereBetween('waktu_kerusakan_month',[1, 6])
            ->groupBy('workcenter','waktu_kerusakan_month')
            ->OrderBy('jumlah_repair', 'Desc')
            ->get();

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 2014-04-10
    • 2017-06-01
    • 2019-09-08
    • 2021-09-11
    • 2021-10-04
    • 1970-01-01
    • 2019-02-03
    • 2019-10-31
    相关资源
    最近更新 更多