【问题标题】:Laravel eloquent search both table in one to many relationship tableLaravel 雄辩地在一对多关系表中搜索两个表
【发布时间】:2020-10-30 05:00:56
【问题描述】:

我的两个表 MemberDeposit一对多 关系一个成员在 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-&gt;where('branch_id',$request-&gt;branch_id)-&gt;get()..... 部分不起作用,请帮助我任何人

【问题讨论】:

    标签: eloquent laravel-5.7


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

      您的问题很模棱两可,但看起来您需要在 with 函数中 use $request

      $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 方法不会过滤您的查询,它只会限制所有存款返回的成员数量。它不是在成员表中搜索。

      2018 年 4 月 12 日更新

      根本没有检查文档,完全不在我的脑海中。

      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();
      

      【讨论】:

      • @John Halsey 请给我建议如何搜索两个表**Member ad Deposit**
      • 您要搜索哪些列?
      • @John Halsey会员表branch_id, village_id和存款表user_id , deposit-date
      • @John Halsey请给我建议
      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 2015-03-07
      • 2012-10-08
      • 2018-10-27
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多