Te faltan las comillas de DB::Raw, ese método recibe un unico string con todo lo demas dentro, quimfv escribio la consulta en sql puro, lo que yo hice fue pasarlo a la sintaxis de laravel, el if que te da error no es un if de php, es un if de mysql por eso debe ir entre comillas. seria algo asi:
Código PHP:
Ver original<?php
$trabajos = DB::table('trabajos')
->join('tecnicos', 'trabajos.responsable_diagnostico', '=', 'tecnicos.id') ->where('trabajos.created_at', '>=', $desde4, 'and', 'trabajos.created_at', '<=', $hasta4)
->select(DB::raw("tecnicos.nombre,
SUM(if(TIMEDIFF(STR_TO_DATE(CONCAT('trabajos.fecha_egreso', ' ', 'trabajos.hora_egreso'), '%d/%m/%Y %H:%i'),
STR_TO_DATE(CONCAT('trabajos.fecha_ingreso', ' ', 'trabajos.hora_ingreso'), '%d/%m/%Y %H:%i'))<'00:30:00',1,0) bien,
SUM(if(TIMEDIFF(STR_TO_DATE(CONCAT('trabajos.fecha_egreso', ' ', 'trabajos.hora_egreso'), '%d/%m/%Y %H:%i'),
STR_TO_DATE(CONCAT('trabajos.fecha_ingreso', ' ', 'trabajos.hora_ingreso'), '%d/%m/%Y %H:%i'))<'00:30:00',0,1) mal)")
)
->groupBy('tecnicos.nombre')
->get();