【问题标题】:Eloquent Raw where query using like conditionEloquent Raw where 使用类似条件查询
【发布时间】:2014-02-22 10:07:32
【问题描述】:

我正在使用这个 Eloquent 原始查询来获取一些结合标题和标签列的搜索结果。我的代码是这样的

$term="Test";
$clips=  \Clip::whereRaw("caption like '%?%' OR tags like '%?%' ", array($term,$term))->get();
dd($clips);

但是使用这个我无法得到结果,因为转储没有显示结果,而使用下面的代码我能够得到结果:

$term="Test";
$clips=  \Clip::whereRaw("caption like '%$term%' OR tags like '%$term%' ")->get();
dd($clips);

然后转储显示所有 5 个预期结果。在第一种情况下我做错了什么。

【问题讨论】:

    标签: laravel-4 eloquent


    【解决方案1】:

    如果你使用准备好的语句,你应该使用 ?没有别的了。如果您自己添加引号,则不应使用准备好的语句。因此,让准备好的语句处理引号并将 % 符号添加到要插入到准备好的语句中的变量中。

    $term="Test";
    $clips=  \Clip::whereRaw("caption like ? OR tags like ? ", array('%'.$term.'%','%'.$term.'%'))->get();
    dd($clips);
    

    顺便说一句,您也可以在没有原始位置的情况下执行此操作..

    $term="Test";
    $clips=\Clip::where("caption","like","%".$term."%")->orWhere("tags","like","%".$term."%")->get();
    dd($clips);
    

    ...我个人更喜欢使用scope 来处理这类事情。

    【讨论】:

    • 很好,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2017-11-13
    • 1970-01-01
    • 2020-08-15
    • 2014-08-20
    • 1970-01-01
    • 2013-09-11
    • 2013-05-24
    相关资源
    最近更新 更多