【发布时间】:2021-08-02 09:10:10
【问题描述】:
我试图弄清楚是否可以添加一个不是表列的键。
查询代码:
$list = DB::table('ouin_request_base as base')
->select(
'base.request_id',
'users.last_name as last_name',
'users.first_name as first_name',
'division.name as division_name',
'base.created_at',
'status.name as status_name'
)
->join('users', 'base.user_id' , '=', 'users.id')
->join('ouin_request_data as data', 'base.request_id', '=', 'data.request_id')
->join('m_request_status as status', 'base.request_state', '=', 'status.ouin')
->join('m_divisions as division', 'users.division_id', '=', 'division.id')
->when(isset($search_name), function($query) use ($search_name){
return $query->where('users.id', '=', $search_name);
})
->when(isset($search_division), function($query) use ($search_division){
return $query->where('division.id', '=', $search_division);
})
->when(isset($search_status), function($query) use ($search_status){
return $query->where('status.ouin', '=', $search_status);
})
->paginate(2);
查询生成器结果:
#items: array:2 [▼
0 => {#1356 ▼
+"request_id": "1-20210802142739"
+"last_name": "last_name"
+"first_name": "first_name"
+"division_name": "OA"
+"created_at": "2021-08-02 14:27:39"
+"status_name": "state"
}
1 => {#1427 ▼
+"request_id": "1-20210802171508"
+"last_name": "last_name"
+"first_name": "first_name"
+"division_name": "OA"
+"created_at": "2021-08-02 17:15:08"
+"status_name": "state"
}
]
我要添加的是检查天气,当前登录用户可以通过检查if(Auth::user()->manager_rank == $form->approve_state)(manager_rank 和approve_state 是整数)来批准这些表单,并在分页之前将“can_approve”键添加到集合中。
$form 是“ouin_request_base”表中各个表单的示例。因此,如果用户的 manager_rank 等于单个表单的状态,则 can_approve 为真。
例子:
#items: array:2 [▼
0 => {#1356 ▼
+"request_id": "1-20210802142739"
+"last_name": "last_name"
+"first_name": "first_name"
+"division_name": "OA"
+"created_at": "2021-08-02 14:27:39"
+"status_name": "state"
+"can_approve": "true"
}
1 => {#1427 ▼
+"request_id": "1-20210802171508"
+"last_name": "last_name"
+"first_name": "first_name"
+"division_name": "OA"
+"created_at": "2021-08-02 17:15:08"
+"status_name": "state"
+"can_approve": "false"
}
]
是否可以在分页前使用when子句将'can_approve'添加到集合中?
【问题讨论】:
-
您通过哪种方式确定用户是否可以批准表单?你有权限的表,用户有角色或定义他们能力的东西?
-
我不认为,您可以通过
when()执行此操作,因为您的数据库中可能有用于确定can_approve的数据,而when()无权访问它。跨度> -
这能回答你的问题吗? How to select static values column?
-
感谢您的回复。我已经编辑了我的问题。不知道够不够。
-
你从哪里得到
$form->approve_state,为什么用单引号括起来?
标签: php laravel query-builder laravel-7 case-when