I have this query:
$sql = "SELECT
po_number AS `po_number`,
a.invoice_num AS `invoice_num`,
location_name AS `location_name`,
state AS `state`,
terms AS `terms`,
duedate AS `duedate`,
invoice_date AS `invoice_date`,
sum(qty) AS `qty`,
CASE WHEN payment_date IS NULL THEN invoice_total ELSE (invoice_total + new_payment_amount) END AS balance
FROM
(
SELECT po_number, invoice_num, payment_date,invoice_total,Location_Job_Id,txn_id,
terms, duedate,invoice_date,sum(CASE WHEN payment_date > :adate THEN 0 ELSE payment_amount END) AS new_payment_amount FROM PSI_Invoice_Payments a WHERE
(
IsPaid = 0 OR
EXISTS
(
SELECT * FROM ATABLE b WHERE
txn_date > :adate AND a.txn_id = b.txn_id
)
)
AND a.client_id = :aclientid GROUP BY invoice_num
) a
LEFT JOIN BTABLE c ON a.invoice_num = c.invoice_num
LEFT JOIN CTABLE d ON a.Location_Job_Id = d.cust_location_id
WHERE a.invoice_date <= :adate GROUP BY a.txn_id ORDER BY a.invoice_num";
$results = \DB::select(
\DB::raw($sql),
[':adate' => $adate, ':aclientid' => $aclientid]
);
I'm getting this Exception:
Illuminate \ Database \ QueryException SQLSTATE[HY093]: Invalid parameter number
Any idea? Is there a better way to execute these kind of queries?