2016-08-02 31 views
0

整数入力パラメータを1つしか受け付けず、cakephpフレームワーク内で複数の行を返すストアドプロシージャを呼び出したいとします。MySQLストアドプロシージャを呼び出してCAKEPHPにデータを表示する

PROCEDURE `Salary`(IN sysid int) 
BEGIN 
SELECT name, lastName, Salary, Month From SalaryData 
where Userid = sysid; 
END 

Model.PHP:ストアドプロシージャ

<?php 
class SalaryModel extends AppModel 
{ 
    public function sProcedure($testId) 
{ 
    $result=$this->query("CALL Salary($testId);"); 
    return $result; 
} 
}?> 

するコントローラコード:

public function Procdata($testId) { 
    $result=$this->Systemstate->sProcedure($testId); 
} 

今、誰も私に質問の内容を表示する方法を提案することができます"view.ctp" ??

私のモデルが正しいことを願います。

ありがとうございます。

+0

あなたがしようとしているのはなぜストアドプロシージャを使用しますか?なぜフレームワークを使用してクエリを生成しないのですか? –

+0

などの複雑なクエリが含まれています。そのため、max関数など、結果がすべて取得された後は、ストアドプロシージャ –

+0

@ Nomanuddinから選択クエリとして返されます。使用している関連するCakePHPのバージョンにのみタグを付けてください。 CakePHP 1または2を使用していますか? – drmonkeyninja

答えて

0

cakephpにストアドプロシージャを呼び出す方法はいろいろあります。しかし、最良の方法は、モデルとして焼く代わりにクエリとして実行することです。 私の検索では、複雑なストアドプロシージャをビルドまたはベークする方法がないためです。

だから、私は私の問題を解決し、この方法:

私のコントローラのコードは次のとおりです。

public function Procdata($testId) { 
    $result=$this->Systemstate->sProcedure($testId); 
    $this->set('data',$result); 
} 

マイディスプレイ・セクションView.CTP

print_r($data); 
1

MySQLストアドプロシージャは、通常、結果を返さないことがあります。 何らかの値を返す代わりに、FUNCTIONを開発する必要があります。 続きを読むhere

+0

大丈夫です。私は関数を使用すると、どのようにcakephpにコンテンツを呼び出して表示するのですか? –

関連する問題