Reputation: 2032
I have a subscriptions
table with a user_id
, date_from
, date_to
, plan
, status
columns. In the blade file, there is just a single filter textbox. I want to filter based on those columns or based by fname
, mname
, lname
fields from the users table. How to correctly do that in eloquent? Here is my code so far.
$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);
Upvotes: 0
Views: 60
Reputation: 461
Try this:
$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);
Upvotes: 1