【发布时间】:2019-05-13 00:28:18
【问题描述】:
我正在创建一个错误跟踪工具并尝试添加查找类似错误的功能,不包括您正在搜索的错误。我正在使用 Laravel 5.7/eloquent 和 postgreSQL。当前的原始查询如下所示:
SELECT
*
FROM bugs
WHERE
subject::text like 'Delectus iusto est architecto magni expedita eum rerum consequatur.'
OR
description::text like 'Delectus iusto est architecto magni expedita eum rerum consequatur.'
AND
id <> 'e0433097-d2b0-49ac-8aea-fcdbefa378b5'
雄辩的版本被提取到一个 BugSearch 类中,但本质上是这样做的:
$builder = DB::table('bugs');
$builder->where('subject', 'like', $bug->subject)
->orWhere('description', 'like', $bug->description);
并返回构建器,此时我尝试添加 where 子句:
$matches = $builder->where('id', '!=', $bug->id)->get();
return response()->json($matches);
这显然不适用于原始查询或 eloquent 的查询构建器,因为两者都返回完全匹配,需要通过 where 子句过滤掉。
【问题讨论】:
标签: sql laravel postgresql eloquent laravel-5.7