简体   繁体   English

laravel querybuilder如何在其中使用函数

[英]laravel querybuilder how to use like in wherein function

$book = array('book1','book2'); $ book = array('book1','book2'); $book array elements numbers are variable. $ book数组元素数是可变的。 it might have 2 element or 20 elements 它可能有2个元素或20个元素
I need to make a query like this: 我需要这样做一个查询:

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

To make this query in laravel 5 there is an option : 要在laravel 5中进行此查询,可以选择:

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

but it use = operator I need to use like operator 但它使用=运算符我需要like运算符like使用

Thanks everyone for helping me but i solved it by doing: 谢谢大家帮助我,但我解决了这个问题:

$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();

For a dynamic query with 1 or n elements use your statement as a collection: For the "like" you can use a Raw statement: 对于具有1或n个元素的动态查询,请将您的语句用作集合:对于“like”,您可以使用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 http://laravel.com/docs/5.1/queries

Raw Expressions 原始表达

or you can use it in this way: 或者您可以这样使用它:

$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();
$name = DB::Table('bookinfo')
          ->select('*')
          ->where('bookname','LIKE','%'.$book[0].'%')
          ->orWhere('bookname','LIKE','%'.$book[1].'%')
          ->get();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM