尝试使用Laravel 5.2从存储过程中获取列时,我得到一个Array to string转换
I've been struggling with this for a while now, so I thought I would post here and see if anyone has a solution as to why it's always throwing an Array to string conversion exception. Here is my code:
Model
public function getPackageReference(Request $request) {
$package_reference = $request->input("package_reference");
$result = DB::select("CALL GetPackageReference(?)", array($package_reference));
return $package_reference .$result;
}
stored procedure:
DELIMITER //
CREATE PROCEDURE GetPackageReference (IN package_reference_param VARCHAR(20))
BEGIN
SELECT LPAD(CAST((COUNT(DISTINCT package_reference) + 1) AS CHAR(3)), 3, '0') AS package_reference
FROM package WHERE package_reference LIKE CONCAT(package_reference_param, '%');
END //
DELIMITER ;
Stored procedure result:
CALL GetPackageReference('T2AGB')
So in my model I would like it to return the package_reference value.
Cheers,
Tim
我一直在努力解决这个问题,所以我想我会在这里发帖,看看有没有人 一个解决方案,为什么它总是抛出一个数组到字符串转换异常。 这是我的代码: p>
模型 p>
公共函数getPackageReference(Request $ request){
$ package_reference = $ request-> input(“package_reference”);
$ result = DB :: select(“CALL GetPackageReference(?)”,array($ package_reference));
返回$ package_reference。$ result;
}
code> pre>
存储过程: p>
DELIMITER //
CREATE PROCEDURE GetPackageReference(in package_reference_param VARCHAR(20))
BEGIN \ n SELECT LPAD(CAST((COUNT(DISTINCT package_reference)+ 1)AS CHAR(3)),3,'0')AS package_reference
FROM包WHERE package_reference LIKE CONCAT(package_reference_param,'%');
END //
DELIMITER;
code> pre>
存储过程结果: p>
CALL GetPackageReference('T2AGB') p>
所以在我的模型中我希望它返回package_reference值 。 p>
干杯, p>
蒂姆 p>
div>
I managed to get the answer I was looking for by changing the model method from:
public function getPackageReference(Request $request) {
$package_reference = $request->input("package_reference");
$result = DB::select("CALL GetPackageReference(?)", array($package_reference));
return $package_reference .$result;
}
to:
public function getPackageReference(Request $request) {
$package_reference = $request->input("package_reference");
$result = DB::select("CALL GetPackageReference(?)", array($package_reference));
return $package_reference .$result[0]->package_reference;
}
The $result
variable is an array and by typing $package_reference .$result
you want to convert it to string and that's what is causing the exception. In PHP, arrays cannot be converted to strings.