Al-*_*min 15 php laravel-5 laravel-query-builder
$ book = array('book1','book2'); $ book数组元素数是可变的.它可能有2个元素或20个元素
我需要进行这样的查询:
select * from book where bookname like %book1% or bookname like %book2%
Run Code Online (Sandbox Code Playgroud)
要在laravel 5中进行此查询,可以选择:
$name = DB::Table('bookinfo')
->select('*')
->wherein('bookname',$book)
->get();
Run Code Online (Sandbox Code Playgroud)
但它使用=运算符我需要使用like运算符
Al-*_*min 26
谢谢大家帮助我,但我解决了这个问题:
$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();
Run Code Online (Sandbox Code Playgroud)
对于具有 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();
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16872 次 |
| 最近记录: |