I've tried to run raw query in Laravel but the result was only a half correct. I am using SQL Server.
Here is my code:
public function listAll (Request $req) {
$str_aktif1 = "1"; $str_aktif2 = "1"; $str_perk = "%"; $str_flagmenu = "HT";
if ($req->has('isaktif')) {
switch ($req->aktif) {
case 0:
$str_aktif1 = "0"; $str_aktif2 = "0";
break;
case 1:
$tampil = "1"; $str_aktif2 = "1";
break;
default:
$tampil = "null"; $str_aktif2 = "2";
break;
}
}
if ($req->has('perkiraan')) {
$str_perk = ($req->perkiraan == 'Semua') ? "%" : $req->perkiraan;
}
if ($req->has('flagmenu')) {
$str_perk = ($req->flagmenu == 0) ? "HT" : "PT";
}
$str = "";
$str .= "select distinct a.*, ";
$str .= " a.ALAMAT1+case when ltrim(a.Alamat2)='' then '' else CHAR(13)+a.ALAMAT2 end ALAMAT, ";
$str .= " a.Usaha+Case when isnull(a.Usaha,'')='' then '' else '. ' end+a.NamacustSupp Nama, ";
$str .= " case when A.iskontrak is null then 0 ";
$str .= " when A.iskontrak=0 then 0 ";
$str .= " when A.iskontrak=1 then 1 end xkontrak, ";
$str .= " NamaJenis,Cd.NamaGroupCustSUpp MyAgent, ";
$str .= " D.namaKota,D.KodeArea,E.namaArea,[dbo].[DataPostHutPiut
(A.KodecustSupp,'".$str_flagmenu."') DetailAkun ";
// $str .= "from temp_dbCustSupp a ";
$str .= "from dbCustSupp a ";
$str .= " left outer join dbperkcustsupp b on b.kodecustsupp=a.kodecustsupp ";
$str .= " left outer join dbPerkiraan c on c.perkiraan=b.perkiraan and c.tipe=1 ";
$str .= " left outer join dbkota D on a.kota=D.KodeKota ";
$str .= " left outer join dbarea E on D.KodeArea=E.KodeArea ";
$str .= " left outer Join DbJenisCustSupp F on A.JenisCustSupp=F.KodeJenis ";
$str .= " left outer join DBGROUPCUSTSUPP cd on A.agent=cd.KODEGROUPCUSTSUPP ";
$str .= "where (a.IsAktif Like ".$str_aktif1." or ".$str_aktif2."=2) ";
$str .= " and isnull(c.Keterangan,'')+' ('+isnull(b.Perkiraan,'')+')' like '".$str_perk."' ";
$str .= " and a.Jenis=1 ";
$str .= "Order by a.KodeCustSupp ";
// dd($str);
$listData = DB::connection('SML')->select($str);
// dd($listData);
return $listData;
}
I've tried to run the final $str in SQL Server and the query was perfectly fine. But when I looked into $listData, only 27 of 102 rows are correct. Index 28 to end seems trouble.
18 => {#1709 ▶}
19 => {#1711 ▶}
20 => {#1742 ▶}
21 => {#1743 ▶}
22 => {#1744 ▶}
23 => {#1745 ▶}
24 => {#1746 ▶}
25 => {#1747 ▶}
26 => {#1748 ▶}
27 => {#1749 ▶} --> there is something wrong here
28 => {#1750 …91} --> there is no triangle button from here
29 => {#1751 …91}
30 => {#1752 …91}
31 => {#1753 …91}
32 => {#1754 …91}
33 => {#1755 …91}
34 => {#1756 …91}
35 => {#1757 …91}
36 => {#1758 …91}
37 => {#1759 …91}
38 => {#1760 …91}
39 => {#1761 …91}
40 => {#1762 …91}
Comparing index 27 & 28, index 28 stop in "...48"
=== EDIT ===
I FOUND THE PROBLEM BUT I DONT KNOW WHY THE PREVIOUS PROBLEM HAPPEN
if ($req->has('flagmenu')) {
$str_perk = ($req->flagmenu == 0) ? "HT" : "PT";
}
Should be $str_flagmenu not $str_perk When i change this, everything work fine.