У меня есть сценарий, в котором я ищу в базе данных, используя Eloquent в Laravel.
У меня следующий запрос:
$search = $request->get('q');
$users = User::where('username', 'like', '%' . $request->get('q') . '%')
->orWhere('displayName', 'like', '%' . $request->get('q') . '%')
->orWhere('email', 'like', '%' . $request->get('q') . '%')
->orWhere('role', 'like', '%' . $request->get('q') . '%')
->orWhere('department', 'like', '%' . $request->get('q') . '%')
->orWhere('location', 'like', '%' . $request->get('q') . '%')
->orWhere('directDialIn', 'like', '%' . $request->get('q') . '%')
->orWhere('mobileNumber', 'like', '%' . $request->get('q') . '%')->get();
и у меня есть следующая область запроса:
/**
* Scope a query by published
*/
public function scopePublished($query)
{
return $query->where('published', 'open');
}
Я хочу использовать область запроса только для поиска открытых статей.
Я знаю, что вы можете связать where
вот так: Article::where()->where()->where()->get()
Я немного запутался с цепочкой, но хочу сказать: искать столбцы статей с помощью оператора LIKE, но только там, где статья открыта.
Не звучит ли плотно, есть ли простой способ преобразовать мою мысль RAW SQL в Eloquent запросы?
В моей голове это был бы базовый запрос для поиска открытых статей, а затем вложенный запрос, который просматривает каждое поле.