尝试使用Laravel 5.2从存储过程中获取列时,我得到一个Array to string转换

尝试使用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')

package reference

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>

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.