我有一个subscriptions
表,其中包含user_id
,date_from
,date_to
,plan
,status
列。在刀片文件中,只有一个过滤器文本框。我想根据这些列或用户表中的fname
,mname
,lname
字段进行过滤。如何正确地雄辩地做到这一点?到目前为止,这是我的代码。
$subscriptions = Subscription::where(function ($query) use ($q) {
$query->orWhere('plan', 'LIKE', '%' . $q . '%')
->orWhere('date_from', 'LIKE', '%' . $q . '%')
->orWhere('date_to', 'LIKE', '%' . $q . '%')
->orWhere('status', 'LIKE', '%' . $q . '%');
})->orWhereHas('user', function ($query2) use ($q) {
$query2->orWhere('fname', 'LIKE', '%' . $q . '%');
$query2->orWhere('mname', 'LIKE', '%' . $q . '%');
$query2->orWhere('lname', 'LIKE', '%' . $q . '%');
})->orderBy('id', 'desc')
->paginate(10)->appends('q', $q);
答案 0 :(得分:1)
尝试一下:
$subscriptions = Subscription::where(function ($query) use ($q) {
$query->where('plan', 'LIKE', '%' . $q . '%')
->orWhere('date_from', 'LIKE', '%' . $q . '%')
->orWhere('date_to', 'LIKE', '%' . $q . '%')
->orWhere('status', 'LIKE', '%' . $q . '%');
})->orWhereHas('user', function ($query2) use ($q) {
$query2->where('fname', 'LIKE', '%' . $q . '%')
->orWhere('mname', 'LIKE', '%' . $q . '%')
->orWhere('lname', 'LIKE', '%' . $q . '%');
})->orderBy('id', 'desc')->paginate(10)->appends('q', $q);