2016-04-25 15 views
0

私は今ここで苦労していますので、ここに投稿して誰かがなぜそれが常に文字列変換の例外への配列を投げているのかについての解決策です。ここに私のコードです:Laravel 5.2を使用してストアドプロシージャから列を取得しようとすると、文字列変換の配列を取得しています

モデル

public function getPackageReference(Request $request) { 
    $package_reference = $request->input("package_reference"); 

    $result = DB::select("CALL GetPackageReference(?)", array($package_reference)); 

    return $package_reference .$result; 
} 

ストアドプロシージャ:

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 ; 

ストアドプロシージャの結果:

CALLのGetPackageReference( 'T2AGB')

package reference

私のモデルでは、package_reference値を返すようにしたいと思います。

乾杯、

ティム

答えて

0

Iからモデル方式を変更することで、私が探していた答えを得るために管理:に

public function getPackageReference(Request $request) { 
    $package_reference = $request->input("package_reference"); 

    $result = DB::select("CALL GetPackageReference(?)", array($package_reference)); 

    return $package_reference .$result; 
} 

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; 
} 
+0

ここでは、最初の結果を得ています。あなたが望むのは確かですか?パッケージに多数の参照がある場合はどうなりますか? –

+0

こんにちは@MohamedBouallegueええ、ストアドプロシージャは、私が返すことを望んでいる1つの列を返します。 –

1

$result変数は配列で、$package_reference .$resultと入力するとコンバートしますそれを文字列に変換すると例外が発生します。 PHPでは配列を文字列に変換することはできません。

関連する問題