向db查询添加其他信息

时间:2017-01-19 13:46:37

标签: mysql laravel laravel-5.2

我有以下工作代码。

DB::table('plates')
        ->join('projects', 'plates.project_id', '=', 'projects.id')
        ->join('equipment_status_codes', 'plates.equipment_status_code_id', '=', 'equipment_status_codes.id')
        ->select('projects.name AS Project', 'equipment_status_codes.name AS StatusCode', DB::raw('count(plates.id) as no_of_plates'))
        ->groupBy('plates.project_id', 'plates.equipment_status_code_id')
        ->get();

这很好用。它返回以下内容。

[
  {
    "Project": "Mose Kuvalis",
    "StatusCode": "Dr. Ava Mraz",
    "no_of_plates": 5
  }
]

虽然我仍然有10个板块,附加了任何项目或状态代码(因此基本上为null值)。我可以在同一个查询中使用它(相同的json)??并返回这样的东西(虽然不一定相同)

[
  {
    "Project": "Mose Kuvalis",
    "StatusCode": "Dr. Ava Mraz",
    "no_of_plates": 5
  },
  {
    "Project": NULL,
    "StatusCode": NULL,
    "no_of_plates": 10 // or some other number
  },
]

感谢您的时间!

根据建议我更新了查询但仍然返回相同的结果。

      return  DB::table('plates')
        ->join('projects', 'plates.project_id', '=', 'projects.id')
        ->join('equipment_status_codes', 'plates.equipment_status_code_id', '=', 'equipment_status_codes.id')
        ->select( DB::raw('IFNULL(projects.name, NULL) as Project'), DB::raw('IFNULL(equipment_status_codes.name, NULL) as StatusCode'), DB::raw('count(plates.id) as no_of_plates'))
        ->groupBy('plates.project_id', 'plates.equipment_status_code_id')
        ->get();

1 个答案:

答案 0 :(得分:0)

您应该在select中尝试C:\Program Files\Java\jdk1.8.0_121\bin,并且应该为每个选择字段使用IFNULL。

IFNULL例子::

DB::raw()