我想在 laravel 中的 select DB::raw 中创建 where 子句
I want to make where clause inside to select DB::raw in laravel
我有两个表 biodata_wni
和 demographics
,我想统计 biodata_wni
中的列 akta_kwn
的值为 1 的数据以及 [=17] 的计数=] 在 biodata_wni
中是 2.
有人会遇到这样的情况吗?
$smstr= $request->semester;
$kec= $request->kecamatan;
$aktakawin= DB::table('biodata_wnis')
->join('demographics', 'biodata_wnis.nik','=','demographics.nik')
->where('demographics.nama_kec','=',$kec)
->where('biodata_wnis.semester','=',$smstr)
->select(
DB::raw("count(biodata_wnis.akta_kwn) WHERE biodata_wnis.akta_kwn = 1 as jml_lk"),
DB::raw("count(biodata_wnis.akta_kwn) WHERE biodata_wnis.akta_kwn = 2 as jml_pr")
, 'demographics.nama_kel')
->groupBy('demographics.nama_kel as name')
->get();
我想得到这样的结果:
Illuminate\Support\Collection {#1321 ▼
#items: array:5 [▶
0 => {#1329 ▶
+"jml_lk": 21
+"jml_pr": 1
+"name": "CARANGSARI"
}
1 => {#1323 ▶
+"jml_lk": 21
+"jml_pr": 1
+"name": "CESTSA"
}
问题出在 SQL 语法上,没有 SQL 语法将 WHERE
应用于 COUNT
。
您可以做的是:
->select(
DB::raw("sum(biodata_wnis.akta_kwn = 1) as jml_lk"),
DB::raw("sum(biodata_wnis.akta_kwn = 2) as jml_pr")
biodata_wnis.akta_kwn = 1
是一个 0 或 1 表达式,取决于它是否为真。 sum
将它们加起来计算该特定项目的数量。
我有两个表 biodata_wni
和 demographics
,我想统计 biodata_wni
中的列 akta_kwn
的值为 1 的数据以及 [=17] 的计数=] 在 biodata_wni
中是 2.
有人会遇到这样的情况吗?
$smstr= $request->semester;
$kec= $request->kecamatan;
$aktakawin= DB::table('biodata_wnis')
->join('demographics', 'biodata_wnis.nik','=','demographics.nik')
->where('demographics.nama_kec','=',$kec)
->where('biodata_wnis.semester','=',$smstr)
->select(
DB::raw("count(biodata_wnis.akta_kwn) WHERE biodata_wnis.akta_kwn = 1 as jml_lk"),
DB::raw("count(biodata_wnis.akta_kwn) WHERE biodata_wnis.akta_kwn = 2 as jml_pr")
, 'demographics.nama_kel')
->groupBy('demographics.nama_kel as name')
->get();
我想得到这样的结果:
Illuminate\Support\Collection {#1321 ▼
#items: array:5 [▶
0 => {#1329 ▶
+"jml_lk": 21
+"jml_pr": 1
+"name": "CARANGSARI"
}
1 => {#1323 ▶
+"jml_lk": 21
+"jml_pr": 1
+"name": "CESTSA"
}
问题出在 SQL 语法上,没有 SQL 语法将 WHERE
应用于 COUNT
。
您可以做的是:
->select(
DB::raw("sum(biodata_wnis.akta_kwn = 1) as jml_lk"),
DB::raw("sum(biodata_wnis.akta_kwn = 2) as jml_pr")
biodata_wnis.akta_kwn = 1
是一个 0 或 1 表达式,取决于它是否为真。 sum
将它们加起来计算该特定项目的数量。