php - Laravel: MYSQL query in laravel -
i have working query goes
select s.name status, q.name quality, p.name process, count(*) plates join equipment_status_codes s on equipment_status_code_id = s.id join plate_qualities q on plate_quality_id = q.id join processes p on process_id = p.id project_id in (select id projects name 'spirit') group s.name, q.name, p.name asc rollup this works , returns results fine.
now trying put in laravel syntax, having difficulties.
so thinking along these lines.
return plate::select('equipment_status_codes.name status', 'plate_qualities.name quality', 'processes.name process') ->join('equipment_status_codes', 'plates.equipment_status_code_id', '=', 'equipment_status_codes.id') ->join('plate_qualities', 'plates.plate_quality_id', '=', 'plate_qualities.id') ->join('processes', 'plates.process_id', '=', 'processes.id') ->groupby(db::raw('equipment_status_code_id rollup')) ... ... ->get(); would out. in advance!
update: @govind samrow
i have tried query. works (with couple of small adjustment) not getting same results 1 when run sql query.
i included screen shots.
so when run sql query.
i following results.
when run laravel query.
return db::table('plates') ->join('equipment_status_codes', 'equipment_status_code_id', '=', 'equipment_status_codes.id') ->join('plate_qualities', 'plate_quality_id', '=', 'plate_qualities.id') ->join('processes', 'process_id', '=', 'processes.id') ->whereraw("project_id in(select id projects name 'spirit')") ->select(db::raw('equipment_status_codes.name status'), db::raw('ifnull(plate_qualities.name, null) quality'), db::raw('ifnull(processes.name, null) process'), db::raw("count(*) total" )) ->groupby(db::raw('equipment_status_codes.name rollup', 'plate_qualities.name rollup', 'processes.name rollup', 'asc')) ->get(); i following.
almost there, not sure what's going on?! ideas?
use whereraw sub query in clause try this:
db::table('plates') ->join('equipment_status_codes', 'equipment_status_code_id', '=', 'equipment_status_codes.id') ->join('plate_qualities', 'plate_quality_id', '=', 'plate_qualities.id') ->join('processes', 'process_id', '=', 'processes.id') ->whereraw("project_id in(select id projects name 'spirit')") ->select('equipment_status_codes.name status', 'plate_qualities.name quality', 'q.name quality', 'processes.name process', db::raw("count(*) total")) ->groupby(db::raw('equipment_status_codes.name, plate_qualities.name, processes.name asc rollup'))->get(); here raw sql result of above got tosql():
select `equipment_status_codes`.`name` `status`, `plate_qualities`.`name` `quality`, `q`.`name` `quality`, `processes`.`name` `process`, count(*) total `plates` inner join `equipment_status_codes` on `equipment_status_code_id` = `equipment_status_codes`.`id` inner join `plate_qualities` on `plate_quality_id` = `plate_qualities`.`id` inner join `processes` on `process_id` = `processes`.`id` project_id in(select id projects name 'spirit') group equipment_status_codes.name, plate_qualities.name, processes.name asc rollup note: can use sql output $query->tosql() , compare actual sql query.


Comments
Post a Comment