You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6:如何将指定SQL语句转换为查询构造器或Eloquent?

将多条件OR LIKE查询转换为Laravel 5.6查询构造器/Eloquent语句

嘿,我来帮你搞定这个问题!你要转换的SQL语句是多字段模糊匹配查询,在Laravel 5.6里可以通过查询构造器或者Eloquent模型轻松实现,下面是具体的写法:

方法一:使用查询构造器

你可以利用where方法的闭包来包裹所有OR条件,这样能保证逻辑清晰,也避免和其他可能的WHERE条件冲突:

$searchTerm = 'something';

$books = DB::table('books')
    ->where(function ($query) use ($searchTerm) {
        $query->where('book_title', 'LIKE', "%{$searchTerm}%")
              ->orWhere('book_author', 'LIKE', "%{$searchTerm}%")
              ->orWhere('book_description', 'LIKE', "%{$searchTerm}%");
    })
    ->get();

方法二:使用Eloquent模型

如果你已经创建了对应的Book模型(位于app/Book.php),可以直接通过模型来调用查询方法,写法和查询构造器几乎一致:

use App\Book;

$searchTerm = 'something';

$books = Book::where(function ($query) use ($searchTerm) {
    $query->where('book_title', 'LIKE', "%{$searchTerm}%")
          ->orWhere('book_author', 'LIKE', "%{$searchTerm}%")
          ->orWhere('book_description', 'LIKE', "%{$searchTerm}%");
})->get();

小提示

  • 这里把搜索词用%包裹,完美实现了SQL里的LIKE '%something%'效果
  • Laravel的查询构造器会自动处理参数绑定,不用担心SQL注入问题
  • 如果后续需要添加其他AND条件,直接在闭包外部链式调用where即可,不会破坏OR条件的逻辑

内容的提问来源于stack exchange,提问作者Mȍhǟmmǟd Șamȋm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:19:42