我正试图从数据库中获取价值,但我仍然很不幸将两个查询结合起来以获得一个结果。
场景:
这可能吗?
我使用的查询
$data = DB::table('tbl_dtr_logs')
->join('tbl_employees_pi','tbl_employees_pi.id','=','tbl_dtr_logs.employee_id')
->select('tbl_employees_pi.*')
->addSelect(DB::raw('MIN(log_timestamp) as timein'))
->where(['log_date'=>$date,'log_type'=>'timein'])
->addSelect(DB::raw('MAX(log_timestamp) as timeout FROM tbl_dtr_logs '))
->groupBy('log_date','employee_id')->get();
表
| id | type | log_timestamp | employee_id | log_date |
--------------------------------------------------------------
| 1 | timein | 2019-08-16 06:54:36 | 1 | 2019-08-16
--------------------------------------------------------------
| 2 | timeout| 2019-08-16 09:00:00 | 1 | 2019-08-16
--------------------------------------------------------------
| 3 | timein | 2019-08-16 07:00:36 | 2 | 2019-08-16
--------------------------------------------------------------
| 4 | timeout| 2019-08-16 09:30:00 | 2 | 2019-08-16
结果
Output should like this :
0 => {id: 1,
timein : 2019-08-16 06:54:36 ,
timeout: 2019-08-16 09:00:00 ,
employee_id: 1,
log_date: 2019-08-16},
1 => {id: 1,
timein : 2019-08-16 07:00:36 ,
timeout: 2019-08-16 09:30:00 ,
employee_id: 1,
log_date: 2019-08-16},
任何帮助将不胜感激。在此先感谢:-)
答案 0 :(得分:1)
您需要按date
而不是datetime
进行分组。您可以将mysql
的{{1}} datetime
转换为日期。因此,利用date()
函数将您的群组更改为此。
db::raw