Многократная загрузка с несколькими условиями в Laravel - PullRequest
1 голос
/ 01 апреля 2020

Я использую Laravel 5.7 версию.

Я хотел бы использовать множественную активную загрузку с предложениями where.

У меня laravel упрощено.

$query = Employee::with(['User','Company','Client'])
                  ->select(*)->whereRaw("(User.id <> 0 and Company.name LIKE %A%) OR Client.id <> 0)")

Я использую готовую загрузку, чтобы избежать оператора JOIN.

Но проблема в том, что сообщение об ошибке говорит, что User.id - это неизвестный столбец в предложении where.

Я полагаю, что два других также будут неизвестными столбцами.

Любые идеи будут оценены.

1 Ответ

0 голосов
/ 01 апреля 2020

Это выглядит немного некрасиво, но вы можете использовать замыкание:

$query = Employee::with('User', function ($inner) {
    $inner->where('id', '!=', 0);
})->with(['Company', 'Client'])
->where(function (Builder $sub) use($companyName) {
    $sub->where('Company.name', 'like', $companyName)
        ->orWhere('Client.id', '!=', 0);
})->get();

Это восстановит:

employees where (user.id != 0 AND (company.name LIKE :companyName OR client.id != 0))

Чтобы изменить порядок этих ограничений, вы нужно переместить замыкание и ограничения в соответствии с вашими требованиями, но для того, что я поняла, это следует сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...