php - 在laravel中插入带有内部连接的select语句
问题描述
我想在 Laravel 中使用带有 select 语句和内部联接的插入查询。我有原始的 mysql 查询,当我在 MySql Workbench 中运行查询时,我得到了预期的结果。但我在 Laravel 日志中收到此错误
我尝试使用 Laravel Query Builder 和 getBindings() 函数来做到这一点。
local.ERROR: 传递给 Illuminate\Database\Query\Builder::cleanBindings() 的参数 1 必须是数组类型,给定字符串,在 C:\wamp\www\aquafresh_voyager\vendor\laravel\framework\src\Illuminate 中调用\Database\Query\Builder.php 第 860 行 {"userId":1,"email":"admin@admin.com","exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code : 0): 传递给 Illuminate\Database\Query\Builder::cleanBindings() 的参数 1 必须是数组类型,给定字符串,在 C:\wamp\www\aquafresh_voyager\vendor\laravel\framework\src\Illuminate 中调用\Database\Query\Builder.php 位于 C:\wamp\www\aquafresh_voyager\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:2856 的第 860 行
这是控制器功能。
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'
解决方案
推荐阅读
- c# - 使用按钮以新形式创建它们
- sql - Postgres 根据某些条件隐藏和显示数据库行
- ios - 当语言为阿拉伯语时,链接在 UITextView 属性字符串中不起作用
- javascript - 如何改进此“采摘”实用程序功能的类型?
- linux - Python 构建完成,但未找到构建这些模块的必要位
- vba - 有没有办法在这个访问 vba 子中使用循环和数组来切换命令按钮视图
- javascript - 使用卡在登录中的 apollo/react-hooks 无法接收令牌
- image - 如何创建多个图像轮播?
- c++ - 无法在 netbeans 中运行 C++ CMake 项目
- sql - 如何防止整数在 SQL Server 中被静默转换为星号?