Bonne journée! Je suis nouveau à Laravel. J'ai essayé plusieurs façons de le faire mais ça me donne une erreur. Je suis en train de convertir cette requête SQL en éloquentgénérateur de requêtes laravel à partir de la requête brute
Select t.employee_code,
CASE WHEN t.day = '2017-08-19' THEN t.PRESENT ELSE NULL END AS `2017-08-19`,
CASE WHEN t.day = '2017-08-20' THEN t.PRESENT ELSE NULL END AS `2017-08-20`,
CASE WHEN t.day = '2017-08-21' THEN t.PRESENT ELSE NULL END AS `2017-08-21`,
CASE WHEN t.day = '2017-08-22' THEN t.PRESENT ELSE NULL END AS `2017-08-22`,
CASE WHEN t.day = '2017-08-23' THEN t.PRESENT ELSE NULL END AS `2017-08-23`,
CASE WHEN t.day = '2017-08-24' THEN t.PRESENT ELSE NULL END AS `2017-08-24`
FROM (
select e.employee_code,
Cast(e_l.time_in As date) As Day,
Case
WHEN e_l.time_in IS NULL THEN 'A'
WHEN DAYOFWEEK(e_l.time_in) In(7, 1) Then 'W'
ELSE 'P'
end as PRESENT
from employee As e
left join employees_logs As e_l on e.id = e_l.employee_id)
AS t
et moi avons essayé de cette façon éloquente
public static function statusReport($data){
$start_date = $data['start_date'];
$end_date = $data['end_date'];
$date_array = self::getDatesFromRange($start_date, $end_date);
$query = DB::raw("(Select t.employee_code,
CASE WHEN t.day = '$start_date' THEN t.Present ELSE NULL END AS '$start_date')");
$query->addSelect(
DB::raw("(
SELECT employee.id as emp_id,
CONCAT(employee.firstname, " ",employee.lastname) AS employee_name,
CAST(employees_log.time_in as date) as date_given,
CASE WHEN employee_logs.time_in IS NULL THEN 'A'
WHEN leave.status_id = 4 AND leave_request.with_pay = 1 THEN 'L'
WHEN leave.status_id = 4 AND leave_request.with_pay = 0 THEN 'LOP'
WHEN DAYOFWEEK(employee_logs.time) In(7, 1) THEN 1 AS 'W'
ELSE 'P' END as status
LEFT JOIN employee_logs On employee.id = employees_logs.employee_id
JOIN leave On employee.id = leave.emp_id
JOIN leave_request On leave.id = leave_request.leave_id
WHERE employee_logs.time_in BETWEEN '$start_date' AND '$end_date') As `t`"));
$data = $query->get();
return $data;
}
la sortie attendue est cette requête dira le statut de l'employé dans chaque jour. Par exemple, si ce jour est Weekend, il affichera 'W' sur la sortie. si l'employé est absent «A» et s'il est présent «P». J'espère que quelqu'un peut me aider. Merci à l'avance
Quelle erreur que vous obtenez, ajoutez votre question. –
erreur de syntaxe, inattendue '"' dans C: \ xampp \ htdocs \ hrpayroll \ api \ app \ Http \ Modèles \ AttendanceReportModel.php sur la ligne 178 –
Pourquoi avez-vous deux instructions' DB :: raw', vous aussi ne ' Je concaténerais le résultat, je dirais que l'erreur vient de là –