2016-08-03 4 views
0

Я хочу распечатать результат хранимой процедуры, которую я выполняю.Распечатайте значение из хранимой процедуры в yii2

Это код, который я пытался:

public function actionGetdata($tranId) { 
    $model = new ReceivedGoodsDetail(); 
    // $model = $this->findModel($tranId); 
    $connection = \Yii::$app->db; 
    $transaction = $connection->beginTransaction(); 

    //set nilai default 
    $model->ID_Received_Goods = $tranId; 

    if ($model->validate()) { 
     $connection = Yii::$app->db; 
     $command = $connection->createCommand('{call usp_T_Sales_Inventory_Detail#SelectData(:ID_Received_Goods)}'); 

     $ID_Received_Goods = $model->ID_Received_Goods; 
     $command->bindParam(":ID_Received_Goods", $ID_Received_Goods, PDO::PARAM_STR); 

     $isSuccess = 0; 
     if ($command->execute()) { 
      $transaction->commit(); 
      $isSuccess = 1; 
     } else { 
      $transaction->rollBack(); 
      $isSuccess = 0; 
     } 
     return [ 
      'data' => $isSuccess 
     ]; 
    } else { 
     $isSuccess = 0; 

     return [ 
      'data' => $isSuccess, 
      'error' => $model->getErrors(), 
     ]; 
    } 
} 

, когда я попробовал это в RESTClient результат

<response> 
<data>1</data> 
</response> 

в то время как я хочу, чтобы результат будет показан результат

select * 
from T_Received_Goods_Detail 
where ID_Received_Goods = 'RG/1608/11' 

Пожалуйста, помогите.

+0

Почему он отображает результат 'select * from T_Received_Goods_Detail, где ID_Received_Goods = 'RG/1608/11'' Когда вы устанавливаете' $ isSuccess = 1; 'и' $ isSuccess = 0; 'и возвращаете' 'данные '=> $ isSuccess, '. Таким образом, он будет печатать либо '1', либо' 0'. Хорошо, что он печатает '1'. Значит, он выполняет ваш запрос. –

+0

Я хочу, чтобы увидеть результат от выполнения этого запроса, , например: ' RG/1607/1 158 ITEM-0002 администратора 2016-07-28 10: 36: 50,910 администратора 2016-07-28 10: 36: 50,910 ' – Allegra

+0

Вы хотите знать. Но где вы написали код для получения выбранных данных? –

ответ

0

Таким образом, вместо того, чтобы возвращать значение $isSuccess, вы можете запустить свой запрос и вернуть результат, если операция была успешной.

В псевдокоде:

if ($isSucces) { 
    $data = [result of query "select * from T_Received_Goods_Detail where ..."]; 
    return [ 
      'data' => $data 
     ]; 
} 

Убедитесь $data это простой массив и интерфейс REST будет выдавать правильный ответ для вас.

+1

спасибо @jlapoutre это работает – Allegra