Generador de consultas de Laravel Error general 2031

Debajo está mi consulta usando el generador de consultas de Laravel:

$begin = new DateTime('2016-07-01'); $end = new DateTime('2016-07-31'); $startDate = $begin->format('Ymd 00:00:00'); $endDate = $end->format('Ymd 23:59:59'); $deposit = $depositModel->select(DB::raw('user_deposit.user_id as user_id, sum(user_deposit.amount) as total_deposit, null as total_withdraw')) ->whereBetween('date_time', [$startDate, $endDate]) ->where('user_deposit.status', 1) ->groupBy('user_deposit.user_id'); $withdraw = $withdrawModel->select(DB::raw('user_withdraw.user_id as user_id, null as total_deposit, sum(user_withdraw.amount) as total_withdraw')) ->whereBetween('user_withdraw.created_at', [$startDate, $endDate]) ->where('user_withdraw.status', 1) ->groupBy('user_withdraw.user_id'); $deposit = $deposit->unionAll($withdraw); $transaction = DB::table(DB::raw("({$deposit->toSql()}) t")) ->select('user_id', DB::raw("sum(total_deposit) as total_deposit_amount, sum(total_withdraw) as total_withdraw_amount")) ->groupBy('user_id') ->get(); 

Esperaba obtener el resultado de la siguiente manera:

 "transaction": [ { "user_id": 2, "total_deposit_amount": "101.00", "total_withdraw_amount": "50.50" }, { "user_id": 5, "total_deposit_amount": null, "total_withdraw_amount": "50.50" } ] 

Pero sigo obteniendo SQLSTATE [HY000]: Error general: 2031 . Así que utilicé toSql () en la consulta para obtener la consulta de SQL crudo y traté de ejecutarla en MySQL y generó el resultado esperado como se indicó anteriormente.

A continuación se muestra la consulta después de ejecutar toSql ()

 SELECT`user_id`, SUM(total_deposit) AS total_deposit_amount, SUM(total_withdraw) AS total_withdraw_amount FROM (( SELECT user_deposit.user_id AS user_id, SUM(user_deposit.amount) AS total_deposit, null AS total_withdraw FROM `user_deposit` WHERE`date_time` BETWEEN '2016-07-01' AND '2016-07-31' AND `user_deposit`.`status` = 1 GROUP BY `user_deposit`.`user_id`) UNION ALL (SELECT user_withdraw.user_id AS user_id, null AS total_deposit, SUM(user_withdraw.amount) AS total_withdraw FROM `user_withdraw` WHERE `user_withdraw`.`created_at` BETWEEN '2016-07-01' AND '2016-07-31' AND `user_withdraw`.`status` = 1 GROUP BY `user_withdraw`.`user_id`)) t GROUP BY `user_id` 

Entonces la pregunta es, ¿qué pasa con mi generador de consultas? ¿Por qué Raw sql funciona mientras que el generador de consultas no?

Gracias

Después de mucha investigación, parece que me he perdido esta

 mergeBindings($sub->getQuery()) 

Mi código:

 $transaction = DB::table(DB::raw("({$deposit->toSql()}) t")) ->mergeBindings($sub->getQuery()) // this is required for selecting from subqueries ->select('user_id', DB::raw("sum(total_deposit) as total_deposit_amount, sum(total_withdraw) as total_withdraw_amount")) ->groupBy('user_id') ->get();