【问题标题】:laravel querybuilder how to use like in wherein functionlaravel 查询生成器如何在 where 函数中使用
【发布时间】:2016-03-23 15:27:06
【问题描述】:

$book = array('book1','book2'); $book 数组元素编号是可变的。它可能有 2 个元素或 20 个元素
我需要这样查询:

select * from book where bookname like %book1% or bookname like %book2%

要在 laravel 5 中进行此查询,有一个选项:

$name = DB::Table('bookinfo')
          ->select('*')
          ->wherein('bookname',$book)
          ->get();

但它使用= 运算符我需要使用like 运算符

【问题讨论】:

    标签: php laravel-5 laravel-query-builder


    【解决方案1】:

    感谢大家帮助我,但我通过这样做解决了它:

    $book = array('book2','book3','book5');  
    
    $name = DB::Table('bookinfo')
            ->select('BookName', 'bookId')                
            ->Where(function ($query) use($book) {
                 for ($i = 0; $i < count($book); $i++){
                    $query->orwhere('bookname', 'like',  '%' . $book[$i] .'%');
                 }      
            })->get();
    

    【讨论】:

    • 这相当于@goldlife 的答案,除了你的更优雅。
    【解决方案2】:

    对于包含 1 或 n 个元素的动态查询,请将您的语句用作集合: 对于“喜欢”,您可以使用 Raw 语句:

    $collection = DB::Table('bookinfo')->select('*');
    foreach($book as $key => $element) {
        if($key == 0) {
            $collection->where(DB::raw('bookname like %'.$element.'%'));
        }
        $collection->orWhere(DB::raw('bookname like %'.$element.'%'));
    }
    $name = $collection->get();
    

    http://laravel.com/docs/5.1/queries

    原始表达式

    或者你可以这样使用它:

    $collection = DB::Table('bookinfo')->select('*');
    foreach($book as $key => $element) {
        if($key == 0) {
            $collection->where('bookname', 'like', '%'.$element.'%');
        }
        $collection->orWhere('bookname', 'like', '%'.$element.'%');
     }
     $name = $collection->get();
    

    【讨论】:

    • $book 数组元素的数量是可变的。它可能有 2 个元素或 20 个元素
    【解决方案3】:
    $name = DB::Table('bookinfo')
              ->select('*')
              ->where('bookname','LIKE','%'.$book[0].'%')
              ->orWhere('bookname','LIKE','%'.$book[1].'%')
              ->get();
    

    【讨论】:

    • 此解决方案仅在 $book 数组仅包含 2 个成员时才有效。当 $book 数组的成员超过 2 个时,我将无法工作,因为有问题提到“它可能有 2 个元素或 20 个元素”。
    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 2018-01-03
    • 2013-12-09
    • 2018-12-26
    • 1970-01-01
    • 2020-01-22
    • 2017-03-29
    相关资源
    最近更新 更多