Laravel Eloquent搜索多个相关表


Laravel Eloquent Search Multiple Related Tables

我很难弄清楚如何对多个相关表运行like查询。

我有一个submissions表,它包含相关的usersmcd_formssubmission_statuses表。

以下是我使用给定的$terms_like运行LIKE语句的代码。

        $submission = new Submission;
        $terms_like = '%'.$search_terms.'%';
        $data['submissions'] = $submission
            ->join('users as users', 'users.id', '=', 'submissions.user_id')
            ->join('mcd_forms as forms', 'forms.submission_id', '=', 'submissions.id')
            ->join('submission_statuses as statuses', 'statuses.id', '=', 'submissions.submission_status_id')
            ->where(function($q) use ($terms_like) {
                $q->where('users.user_group_id', '=', Auth::user()->user_group_id)
                ->orWhere('forms.name', 'like', $terms_like)
                ->orWhere('forms.custom_id', 'like', $terms_like)
                ->orWhere('forms.start_date', 'like', $terms_like)
                ->orWhere('forms.end_date', 'like', $terms_like)
                ->orWhere('forms.soft_sell_date', 'like', $terms_like)
                ->orWhere('forms.region', 'like', $terms_like)
                ->orWhere('statuses.status_formatted', 'like', $terms_like);
            });

无论我尝试什么,都会返回不正确的结果。我做错了什么?

在上面的查询中,由于您没有使用"%"符号,您的like子句的工作方式是"=",因为它试图匹配整个单词。

替换所有"where"条款,如下所示:

->orWhere('forms.name', 'like', "%".$terms_like."%")

这将尝试在文本中的任何位置匹配单词。

您可以尝试以下"like"运算符:

$users = DB::table('users')
            ->where('forms.name','LIKE', '%'.$terms_like.'%')
            ->get();