Laravel 5.4 where 子句 if $request->jobTitle !null?

Laravel 5.4 where clauses if $request->jobTitle !null?

我构建了小型搜索表单帮助我从 db

中搜索职位Table

jobs Table 有 jobTitle、jobCompany、jobGovernorate、jobLocation 和 created_at 列

并从搜索表单发布数据:

{"jobTitle":"designer","jobCompany":null,"jobGovernorate":null,"jobLocation":null,"postingDate":"ad"}

我的意思是某些输入可能为空,因此如何为输入编写动态 where 子句具有价值,我希望搜索引擎能够通过 JobTitle、JobCompany 或所有输入(如果具有价值)进行搜索。

提示:字段名称和 table 列名称相同

如果有办法从我的数据库中检索工作,例如

DB::table('jobs')->where($request->all())

抱歉英语不好,我不知道怎么解释我的问题

您必须对查询进行编码,我的意思是,您在寻找什么? 像

DB::table('jobs')->where([
['jobTitle',  'like', $request->jobTitle . '%'],
['jobCompany', 'like', $request->jobCompany . '%']])->get();

我更喜欢定义所有搜索字段。

$searchFields = ['jobTitle','jobCompany','jobGovernorate','jobLocation','postingDate'];
$jobQuery = DB::table('jobs');
foreach ($searchFields as $field) {
    if ($request->has($field)) {
        $jobQuery->where($field, $request->input($field));
    }
}
$results = $jobQuery->get();