Laravel красноречивый поиск по обеим таблицам в таблице отношений один ко многим - PullRequest
0 голосов
/ 28 ноября 2018

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

Это мой Member Стол

1.id,
2.branch_id,
3.village_id,
4.user_id,
5.name,
6.phone,
7.email,
8........

Мой Deposit Стол

1.meber_id,
2.user_id
3.deposit_date,
4.deposit_amount,
5.total_amount,
6..........

Мой код контроллера

$depo = Deposit::with(['member'=>function($query){$query->where('branch_id',$request->branch_id)->where('status','running')->get();}])->where('user_id',$request->user_id)->whereDate('deposit-date','>=',$from_date)->whereDate('deposit-date','<=',$to_date)->get();

если я сделаю это, то .... $query->where('branch_id',$request->branch_id)->get()..... раздел не работает, пожалуйста, помогите мне что-нибудь

1 Ответ

0 голосов
/ 28 ноября 2018

Ваш вопрос довольно двусмысленный, но, похоже, вам нужно use $request в функции with.

$deposits = Deposit::with(['member' => function ($query) use ($request) {
    $query->where('branch_id', $request->branch_id)
        ->where('status', 'running')->get();
}])->where('user_id', $request->user_id)
    ->whereDate('deposit-date', '>=', $from_date)
    ->whereDate('deposit-date', '<=', $to_date)
    ->get();

Но метод with не отфильтрует ваш запроспросто ограничит количество участников, возвращаемых со всеми депозитами.Это не поиск в таблице участников.

ОБНОВЛЕНИЕ 04/12/2018

Без проверки документов вообще и полностью с моей головы.

Deposit::with('member', function($query) use($request){
    $query->where('branch_id', $request->branch_id)
        ->orWhere('village_id', $request->village_id)
})->where(function($query) use($request) {
    $query->where('user_id', $request->user_id)
        ->whereDate('deposit-date', '>=', $from_date)
        ->whereDate('deposit-date', '<=', $to_date)
})->orWhereHas('member', function($query) use($request){
    $query->where('branch_id', $request->branch_id)
        ->orWhere('village_id', $request->village_id)
})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...