Я создаю инструмент отслеживания ошибок и пытаюсь добавить возможность поиска похожих ошибок, исключая ошибку, по которой вы ищете.Я использую 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.