laravel querybuilder如何在其中使用函数

时间:2015-12-17 08:30:03

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

$ 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运算符

4 个答案:

答案 0 :(得分:22)

感谢大家帮助我,但我通过以下方式解决了这个问题:

127.0.0.1

答案 1 :(得分: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();

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

$name = DB::Table('bookinfo')
      ->select('*')   
      ->where("bookname like '%book1%' OR bookname like '%book2%'")
      ->get();