我正在尝试将此sql转换为php laravel 5.1查询。
SELECT `videoId`, `videoTitle`FROM `tempdetails` WHERE `videoTitle` LIKE '%Ramsays Kitchen Nightmares%'
or videoTitle in
(
videoTitle in
(`videoTitle` LIKE '%season 1%' or `videoTitle` LIKE '%e01%' or `videoTitle` LIKE '%01x%')
or
videoTitle in
(`videoTitle` LIKE '%episode 1%' or `videoTitle` LIKE '%s01%' or `videoTitle` LIKE '%x01%')
)
这是我尝试过的代码。
$vd = DB::table('tempdetails');
$vd ->where('videoTitle', 'like', '%'.$titl.'%')
->whereIn('videoTitle',function($query) {
$query->orwhere( 'videoTitle', 'like', '%season 1%')
->orWhere( 'videoTitle', 'like', '%s01%')
->orWhere( 'videoTitle', 'like', '%01x%');
});
$vd->whereIn('videoTitle',function($query) {
$query->orWhere( 'videoTitle', 'like', '%episode 1%')
->orWhere( 'videoTitle', 'like', '%e01%')
->orWhere( 'videoTitle', 'like', '%x01%');
});
$vd->get();
但这给我一个错误:
SQLSTATE [HY000]:常规错误:使用(SQL 1096个表格:从SELECT *
tempdetails
那里videoTitle
就像%拉姆齐的厨房噩梦%和videoTitle
IN(SELECT *,其中videoTitle
如%季1%或videoTitle
类似%S01%或videoTitle
类似%01X%)和videoTitle
中(选择*,其中videoTitle
%episode 1%或videoTitle
%e01%或videoTitle
%x01%))
任何人都有一个想法如何实现这一目标?
您可以使用whereRaw
或DB::select()
。当我有无法直观翻译的复杂语句时,除非我真的很需要口才,否则我倾向于运行原始语句。
另外,我不确定您的数据是什么样子以及您想要达到什么目的,但是可能会有一种方法来重写查询,以便更好地应对雄辩的约束。
例子 whereRaw()
$wherelikes = "videoTitle in
(
videoTitle in
(`videoTitle` LIKE '%season 1%' or `videoTitle` LIKE '%e01%' or `videoTitle` LIKE '%01x%')
or
videoTitle in
(`videoTitle` LIKE '%episode 1%' or `videoTitle` LIKE '%s01%' or `videoTitle` LIKE '%x01%')
)"
$vd = DB::table('tempdetails')
->whereRaw("`videoTitle` LIKE '%Ramsays Kitchen Nightmares%'")
->orWhere(function($query) use ($whereLikes) {
$query->whereRaw($whereLikes)
})->get();
例子 DB::select()
$statement = "SELECT `videoId`, `videoTitle`FROM `tempdetails` WHERE `videoTitle` LIKE '%Ramsays Kitchen Nightmares%'
or videoTitle in
(
videoTitle in
(`videoTitle` LIKE '%season 1%' or `videoTitle` LIKE '%e01%' or `videoTitle` LIKE '%01x%')
or
videoTitle in
(`videoTitle` LIKE '%episode 1%' or `videoTitle` LIKE '%s01%' or `videoTitle` LIKE '%x01%')
)"
$vd = DB::select(DB::raw($statement));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句