Laravel 在拉雷维尔的雄辩中,情况相似

Laravel 在拉雷维尔的雄辩中,情况相似,laravel,eloquent,Laravel,Eloquent,我是新来的能言善辩的拉雷维尔 现在我在下面使用mysql查询来转换数据 select * from `dsa_data_realisasi_resolver` where (CASE WHEN akun LIKE '%51%' THEN 51 ELSE 0 END ) and year(`tanggal`) = 2020 and `kdsatker` = 412772 group by `akun` 当我试着用雄辩来表达这样的话 $realisasi=Realisasi::whereRaw(

我是新来的能言善辩的拉雷维尔

现在我在下面使用mysql查询来转换数据

select * from `dsa_data_realisasi_resolver` where (CASE WHEN akun LIKE '%51%' THEN 51 ELSE 0 END ) and year(`tanggal`) = 2020 and `kdsatker` = 412772 group by `akun`
当我试着用雄辩来表达这样的话

 $realisasi=Realisasi::whereRaw('(CASE WHEN akun LIKE '%51%' THEN 51 ELSE 0 END )')
                        ->whereYear('tanggal','2020')
                        ->where('kdsatker','412772')
                        ->groupby('akun')
                        ->get();
                        dd($realisasi);
有错误

ErrorException
A non-numeric value encountered 
当我尝试删除单引号'

$realisasi=Realisasi::whereRaw('(CASE WHEN akun LIKE %51% THEN 51 ELSE 0 END )')
                            ->whereYear('tanggal','2020')
                            ->where('kdsatker','412772')
                            ->groupby('akun')
                            ->get();
                            dd($realisasi);
错误是

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%51% THEN 51 ELSE 0 END ) and year(`tanggal`) = ? and `kdsatker` = ? group by `a' at line 1 (SQL: select * from `dsa_data_realisasi_resolver` where (CASE WHEN akun LIKE %51% THEN 51 ELSE 0 END ) and year(`tanggal`) = 2020 and `kdsatker` = 412772 group by `akun`) 
对于类似“%data%”的大小写查询,是否有雄辩的解决方案

谢谢

尝试使用
(当akun喜欢“%51%”时为CASE,然后是51 ELSE 0 END)
注意双引号包含
whereRaw
语句

若要发送动态数据,您可以尝试
“(当akun喜欢“%”数据“%”时的情况,“%”然后51 ELSE 0结束)

因此,您的查询应该如下所示:

$realisasi=Realisasi::whereRaw("(CASE WHEN akun LIKE '%".$data."%' THEN 51 ELSE 0 END )')
                    ->whereYear('tanggal','2020')
                    ->where('kdsatker','412772')
                    ->groupby('akun')
                     ->get();

MySQL要求like模式位于单引号内。有关更多参考信息:

请尝试使用
(当akun喜欢“%51%”时,使用CASE,然后使用51 ELSE 0 END)
->双引号包含where raw语句。若要发送动态,您可以尝试
”(“当akun喜欢“%”数据“%”时,“%”然后51 ELSE 0结束)”
非常感谢,很高兴我能提供帮助。作为答复张贴。