Laravel querybuilder how to use, for example, in a function

$ book = array ('book1', 'book2'); The numbers of $ book elements are variables. it can have 2 elements or 20 elements
I need to make a request like this:

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

To make this request in laravel 5, there is an option:

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

but it uses the operator = I need to use the like operator

+7
php laravel-5 laravel-query-builder
source share
5 answers

Thanks to everyone for the help, but I solved this:

 $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(); 
+10
source share

For a dynamic query with 1 or n elements, use your operator in the form of a collection: For "like", you can use the Raw operator:

 $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

Raw expressions

or you can use it as follows:

 $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(); 
+2
source share
 $name = DB::Table('bookinfo') ->select('*') ->where('bookname','LIKE','%'.$book[0].'%') ->orWhere('bookname','LIKE','%'.$book[1].'%') ->get(); 
0
source share
 $name = DB::Table('bookinfo') ->select('*') ->where("bookname like '%book1%' OR bookname like '%book2%'") ->get(); 
-one
source share
 $name = DB::Table('bookinfo') ->select('*') ->wherein('bookname','like','%'.$book.'%') ->get(); 
-3
source share

All Articles