我有两个表requeststatus_trackerrequest表具有request_id,approver_id ,status_id字段,并且status_tracker具有request_id,status_before,changed_by,status_after字段。每个请求都经过审查,状态更改为17/20。我想获取记录在asset_request表中对其进行审核(状态= 17)并且approver_id = 1866并在status_tracker表中获取changed_by'1877'的记录。

我想获取记录001(status.tracker.changed_by ='1866'),
002(approver_id = 1866和status_tracker.status_after = '17'),
004((status.tracker.changed_by ='1866'))。

request table
request_id approver_id  status_id requestor
001          11              18    301
002          1866            17    113
003          115             17    159
004          112             19    163
005          1866            1     172
006          1866            20    172

status_tracker
request_id  status_before   status_after changed_by
  001           null           1            301
  001            1             17          1687
  001            17             8          1724
  001            8             18          1866
  002           null            2           113
  002            2             17          1687
  003            null           1           159
  003            1             17          1687
  004            null          1            163
  004            1             17          1687
  004            17             8          1724
  004            8              19         1866
  005            null           1          172
  006            null           1          172
  006            1              20         1687


我尝试过

$users = DB::table('asset_status_tracker')
->leftJoin('asset_request', 'asset_status_tracker.request_id', '=','asset_request.request_id')
->where('asset_status_tracker.status_before','!=',null)
->orwhere('asset_status_tracker.changed_by','=',$approver_id)
->orwhere('asset_request.approver_id','=',$approver_id)
->where('asset_status_tracker.status_after','=','17')->get();


现在我得到了所有已审查的记录001,002,003,004,005。

最佳答案

将两个Orwhere都放在一个函数中

->orwhere(function($subQ) use ($approver_id) {
    $subQ->where('asset_status_tracker.changed_by','=',$approver_id)
    ->orwhere('asset_request.approver_id','=',$approver_id);
});

关于mysql - 在laravel查询中选择行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50506142/

10-11 18:54