我正在努力弄清楚如何针对多个相关表运行like
查询。
我有一个submissions
表,其中包含相关的users
,mcd_forms
和submission_statuses
表。
以下是我使用给定LIKE
运行$terms_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);
});
无论我尝试什么,都会返回不正确的结果。我做错了什么?
答案 0 :(得分:0)
在上面的查询中,由于您没有使用“%”符号,因此您的like子句以“=”的形式工作,因为它试图匹配整个单词。
替换所有“where”子句,如下所示:
->orWhere('forms.name', 'like', "%".$terms_like."%")
这将尝试在文本中的任何位置匹配单词。
答案 1 :(得分:0)
你可以尝试'喜欢'运算符:
$users = DB::table('users')
->where('forms.name','LIKE', '%'.$terms_like.'%')
->get();