Фильтр Laravel от столбцов или до внешнего ключа - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть таблица 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);

1 Ответ

1 голос
/ 08 ноября 2019

Попробуйте это:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...