php 如何将LIKE添加到此Eloquent查询中

syqv5f0l  于 2022-12-21  发布在  PHP
关注(0)|答案(2)|浏览(135)

我正在使用Laravel 5.8,我有这样的方法:

public function getCourseDefinition()
    {
        $course_definition = DB::table('getCourseDefinition');
         
        if (request()->has('cod_title') && request('cod_title'))
            $course_definition = $course_definition->whereRaw("cod_title = ?", [request('cod_title')]);
    }

因此,它基本上检查请求是否包含cod_title,然后搜索特定的request('cod_title')
但是现在我需要添加**LIKE**,以便根据输入的内容返回类似的结果。
所以我试了这个:

$course_definition = $course_definition->whereRaw("cod_title = ?", 'LIKE', [request('cod_title')]);

但得到了这个错误:

数组到字符串的转换

那么到底出了什么问题?
如何将LIKE添加到此搜索查询?

ecr0jaav

ecr0jaav1#

whereRaw只接受两个参数。
像这样定义

$course_definition = $course_definition->whereRaw("cod_title LIKE ?", ['%' . request('cod_title') . '%']);

来自拉腊维尔文件

whereRaworWhereRaw方法可用于***将原始“where”子句插入查询***。这些方法***接受可选绑定数组作为其第二个***参数

qjp7pelc

qjp7pelc2#

你也可以这样使用where雄辩的方法:

public function getCourseDefinition()
{
   $course_definition = DB::table('getCourseDefinition')
   ->when(request()->has('cod_title') && request('cod_title'), function($query){
     $query->where('cod_title', 'like', '%'.request('cod_title').'%');
   })
   ..// ;
}

相关问题