beginner
beginner

Reputation: 2032

Laravel filter from colums or to foreign key

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

Answers (1)

Jrb
Jrb

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

Related Questions