Я хочу использовать запрос вставки с оператором выбора и внутренним соединением в Laravel.У меня есть сырой MySQL запрос, и когда я запускаю запрос в MySql Workbench, я получаю ожидаемые результаты.Но я получаю эту ошибку в журналах Laravel
И я пытался сделать это с помощью Laravel Query Builder и функции getBindings ().
local.ERROR: Аргумент 1 передан в Illuminate \ Database\ Query \ Builder :: cleanBindings () должен иметь тип массива с заданной строкой и вызываться в C: \ wamp \ www \ aquafresh_voyager \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Builder.php в строке 860{"userId": 1, "электронная почта": "admin@admin.com", "исключение": "[объект] (Symfony \ Component \ Debug \ Exception \ FatalThrowableError (код: 0): аргумент 1 передан в Illuminate \ Database\ Query \ Builder :: cleanBindings () должен иметь тип массива с заданной строкой и вызываться в C: \ wamp \ www \ aquafresh_voyager \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Builder.php в строке 860в C: \ wamp \ www \ aquafresh_voyager \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Builder.php: 2856)
это функция контроллера.
public function insertNewRoute(Request $request)
{
$routeplan = new Routeplan;
$user_email = auth()->user()->email;
$RouteCode = $request->route_code;
$routeplan->RouteplanCode = $request->routePlanCode;
$routeplan->RouteCode = $RouteCode;
$routeplan->DriverID = $request->driver;
$routeplan->SalesmanID = $request->salesman;
$routeplan->Routercode1 = $request->router_01;
$routeplan->Routercode2 = $request->router_02;
$routeplan->VehicleNo = $request->vehicle_no;
$routeplan->Date = $request->date;
$routeplan->Createuser = $user_email;
$routeplan->Status = 'TEMP';
$routeplan->save(); //this query works !
$select = Invoice::join('customer', function ($join) {
$join->on('invoice.CustomerCode', '=', 'customer.CustomerCode');
$join->on('customer.CustomerCode',
'rootplan_product.CustomerCode');
})->join('invoice', 'invoice.CustomerCode', '=',
'customer.CustomerCode')
->select(['customer.CustomerCode','customer.RouteCode',
'TEMP', 'rootplan_product.RouteplanCode',
'invoice.Status'])
->where('invoice.Status','DOWNLOADED')
->whereIn('customer.RouteCode', $RouteCode)
->get();
$bindings = $select->getBindings();
$insertQuery = 'insert into rootplan_product
(CustomerCode,RouteCode,STATUS)'. $select->toSql();
\DB::insert($insertQuery, $bindings);
}
Это необработанный запрос
INSERT INTO rootplan_product (CustomerCode,RouteCode,STATUS) SELECT
customer.CustomerCode,customer.RouteCode,'TEMP' FROM invoice INNER JOIN
customer ON invoice.CustomerCode = customer.CustomerCode WHERE
invoice.Status = 'DOWNLOADED'
AND customer.RouteCode = 'MO-A'