$teacherStats = DB::table( DB::raw("({$payableContracts->toSql()}) as payable") )
->select('payable.teacher_id')
->selectRaw("CONCAT(first_name, ' ', last_name) as full_name,
SUM(total_direct_benefit + total_indirect_benefit) AS total_benefit,
SUM(teachers_direct_share + teachers_indirect_share) as teachers_share"
)
->selectRaw("DATE('$wageFrom') as wage_from, DATE('$wageTo') as wage_to")
->mergeBindings($payableContracts)
->join('users', 'payable.teacher_id', 'users.id')
->groupBy('payable.teacher_id')
$result = DB::table(DB::raw("({$teacherStats->toSql()}) as stats"))
->leftJoin('teacher_wages', function ($join) use ($wageFrom, $wageTo){
$join->on('stats.teacher_id', '=', 'teacher_wages.teacher_id')
->where('teacher_wages.from', $wageFrom)
->where('teacher_wages.to', $wageTo)
->where('teacher_wages.contracts_type', 'percentage-based');
});
У меня есть $ teacherStats в качестве запроса, и когда я получаю и dd () результат, он просто отлично работает. Этот запрос сложный, но результат так же прост:
[▼
0 => {#591 ▼
+"teacher_id": 2
+"full_name": "Tom Cruz"
+"total_benefit": "126000"
+"teachers_share": "25200"
+"wage_from": "2020-04-01"
+"wage_to": "2020-04-03"
}
1 => {#594 ▼
+"teacher_id": 5
+"full_name": "John Reno"
+"total_benefit": "296000"
+"teachers_share": "103600"
+"wage_from": "2020-04-01"
+"wage_to": "2020-04-03"
}
]
Проблема в приведенном выше запросе $ result, который преобразует $ teacherStats в sql в качестве псевдонима и выполняет простое соединение с другим Таблица. Я получаю эту ошибку:
SQLSTATE [HY093]: недопустимый номер параметра
без подсказки, к какому параметру и номеру он относится.