Почему мое третье условие не работает в поиске?
Я пытаюсь получить результат поиска, и у меня есть следующий код:
public function search(Request $request){
$from = $request->from;
$to = $request->to;
$word = $request->word;
if(empty($word) || $word == null){
$searched = Post::whereBetween('created_at', [$from, $to])->paginate(10);
} elseif(!empty($word) && !empty($from) && !empty($to)){
$searched = Post::where('title', 'LIKE', '%' . $word . '%')
->orWhere('content', 'LIKE', '%' . $word . '%')
->orWhere('subtitle', 'LIKE', '%' . $word . '%')
->whereBetween('created_at', [$from, $to])
->paginate(10);
} elseif(empty($from) && empty($to) && !empty($word)){
$searched = Post::where('title', 'LIKE', '%' . $word . '%')
->orWhere('content', 'LIKE', '%' . $word . '%')
->orWhere('subtitle', 'LIKE', '%' . $word . '%')
->paginate(10);
}
return view('page.search', compact('searched', 'from', 'to'));
}
Первое и второе условия работают, но не последнее. Что я здесь упускаю или делаю неправильно?
У вопроса есть решение - Посмотреть?

Вам нужно проверить последнее условие, должно быть что-то противоположное ожидаемому, поэтому оно не работает.
Источник

Источник

@HirenGohel для выполнения первого условия $word должен быть пустым, но это не так.
Источник

Источник

Что именно вы подразумеваете под"не работает"? Что вы пытались сделать, чтобы решить эту проблему?
Источник

@NicoHaase в моей форме есть тег name, но когда я только заполняю слово, я ничего не получаю во время отладки $request
Источник
Ответы - Почему мое третье условие не работает в поиске? / Why isn't my third condition working in search?
Является ответом!

27.01.2020 10:06:22
попробуй вот это
- например, если слово найдено, то поиск с таким же первым условием истинный
- если пользователь установил ОТ и до даты, то второе условие истинно
если пользователь заполняет оба (Слово и дату), то ваши оба условия истинны..
если ваш не заполняет никакого значения, то получите только первые 10 (десять) сообщений(ни одно из условий не соответствует)
public function search(Request $request){ $posts = Post::query(); $from = $request->from; $to = $request->to; $word = trim($request->word); if($word && !empty($word)){ $posts->where('title', 'LIKE', '%' . $word . '%') ->orWhere('content', 'LIKE', '%' . $word . '%') ->orWhere('subtitle', 'LIKE', '%' . $word . '%'); } if(!empty($from) && !empty($to)){ $posts->whereBetween('created_at', [$from, $to]); } $searched = $posts->paginate(10); return view('page.search', compact('searched', 'from', 'to')); }

Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него урок - что вы подразумеваете под "автоматически подобранным"?

Что делать, если пользователь вводит значение во все поля, которые вы показали только кейсам.

@NicoHaase я забыл добавить экспляцию теперь добавить so pl проверить

@JigneshJoisar Спасибо за помощь. Но я хочу отобразить сообщение, если форма отправлена пустой. Как это можно сделать?
Помочь в развитии проекта: