我有两个表request
和status_tracker
。request
表具有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/