Можно ли в Laravel выполнить поиск по двум колонкам одновременно?

Как можно объединить два фрагмента кода для поиска по двум колонкам, таким как 'title' и 'original_title', при использовании данных из колонки 'title'?
  • 25 февраля 2024 г. 17:48
Ответы на вопрос 2
Да, в Laravel можно выполнить поиск по двум колонкам одновременно. Для этого можно воспользоваться методом where(), передавая ему два условия для каждой колонки.

Пример кода для поиска по колонкам 'title' и 'original_title':

```php
$search = 'Some text'; // текст для поиска

$movies = Movie::where('title', 'like', '%' . $search . '%')
                ->orWhere('original_title', 'like', '%' . $search . '%')
                ->get();
```

В этом примере мы ищем все записи, в которых значение колонки 'title' или 'original_title' содержит заданный текст.

Чтобы объединить два фрагмента кода для поиска по двум колонкам 'title' и 'original_title' при использовании данных из колонки 'title', можно воспользоваться методом selectRaw():

```php
$search = 'Some text'; // текст для поиска

$movies = Movie::selectRaw('*, IF(title LIKE "%' . $search . '%", 1, 0) + IF(original_title LIKE "%' . $search . '%", 1, 0) as relevance')
                ->where('title', 'like', '%' . $search . '%')
                ->orWhere('original_title', 'like', '%' . $search . '%')
                ->orderBy('relevance', 'desc')
                ->get();
```

В данном примере мы добавляем дополнительное поле 'relevance', которое считает количество совпадений текста в колонках 'title' и 'original_title'. После этого сортируем результаты по убыванию 'relevance'.
<code>havingRaw / orHavingRaw</code> разве тут не поможет? <br/> <br/> Ну и второе объединенное поле обозвать по другому, например <code>original_title_and_year</code> . <br/> <br/> <pre><code class="php">-&gt;selectRaw("concat(title, ' ', release_date) as title_and_year, concat(original_title, ' ', release_date) as original_title_and_year")</code></pre> <br/> <br/> Или надо не совсем это? <br/> <br/> P.S. А еще лучше перевести поиск на Meilisearch
Похожие вопросы