【发布时间】:2018-05-24 18:35:26
【问题描述】:
我有两个表 request 和 status_tracker.request 表有 request_id,approver_id ,status_id 字段,status_tracker 有 request_id,status_before,changed_by,status_after 字段。每个请求都经过审核,状态更改为 17/20。我想获取asset_request表中review(status=17)和approver_id =1866的记录,获取status_tracker表中changed_by'1877'的记录。
我要获取记录 001(status.tracker.changed_by='1866'), 002(approver_id=1866 and 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。我做了什么
【问题讨论】:
-
你的逻辑对我来说不是很清楚(甚至可能对你来说也不是)。请给出为什么
001、002和004应该出现在输出中的确切规则。
标签: mysql laravel laravel-5 laravel-5.3