如何将mutliple查询包装到laravel中的单个where子句中

时间:2017-06-29 10:50:59

标签: laravel filter eloquent where clause

我想从表pasien_polis中获取记录,其中polyclinic_idid表的polyclinics匹配。

我可以通过这样做来实现这一目标:

    $polyclinic = Polyclinic::findOrFail($id);
    $pasienpoli = Polyclinic::find($id)->PasienPoli;

我想要过滤的下一件事是created_at记录,我只想获取今天创建的记录。 此查询效果很好:

    $pasienpoli = DB::table('pasien_polis')->whereDate('created_at', '=', \Carbon\Carbon::today()->toDateString())->get();

当我想将这两个过滤器组合成一个where子句时,问题出现了。

我尝试过以下操作但返回NULL

$polyclinic = Polyclinic::findOrFail($id);
$match = Polyclinic::find($id)->PasienPoli;

$pasienpoli = DB::table('pasien_polis')->where([
                     ['polyclinic_id', '=', '$match'],
                     ['created_at', '=', \Carbon\Carbon::today()->toDateString()]
                                               ])->get();

请帮忙吗?

更新:

STRUCTURE OF <code>pasien_polis</code>

STRUCTURE OF <code>polyclinics</code>

2 个答案:

答案 0 :(得分:1)

我想你可以试试这个:

    $pasienpoli = DB::table('pasien_polis')
                        ->join('polyclinics','polyclinics.id','=','pasien_polis.polyclinic_id')
                        ->where([
                         ['pasien_polis.polyclinic_id', '=', $id],
                         ['pasien_polis.created_at', '=', \Carbon\Carbon::today()->toDateString()]])
                       ->get();

希望对你有所帮助!

答案 1 :(得分:0)

通过修改@AddWeb Solution Pvt的答案解决(感谢一堆) 这是我最后的工作查询:

$pasienpoli = DB::table('pasien_polis')
  ->join('polyclinics','polyclinics.id','=','pasien_polis.polyclinic_id')
  ->where([
  ['pasien_polis.polyclinic_id', '=', $id],
  [DB::raw('DATE(pasien_polis.created_at)'), '=', \Carbon\Carbon::today()->toDateString()]
  ])->get();