2016-04-22 6 views
0

Productnamesコントローラーでjavascriptとアクションを通じてテーブルからRowを取得しています。私は取得していますyii2でjavascriptを使って関連モデルを取得

フィールドはのProductIDPRODUCTNAMEbottletypeです。これまでのところは問題ありません。 ProductnamesController

public function actionGetForProduction($catid) 
    { 
     $bottle = Productnames::findOne(['productnames_productname'=>$catid]); 
     //$bottle -> select(['productnames.productnames_productname','productnames.bottletype','bottlename.unitprice'])->from('Productnames')->leftJoin('bottlename','productnames.bottletype = bottlename.bottlename')->where(['productnames_productname'=>$catid])->limit(1); 
     echo Json::encode($bottle); 
    } 

JS

<?php 
$script = <<< JS 
$('#catid').change(function(){ 
    var catid = $(this).val(); 

    $.get('index.php?r=production/productnames/get-for-production',{ catid : catid }, function(data){ 
     alert(data.unitprice); 
     // var data = $.parseJSON(data); 
     // $('#productnames-bottletype').attr('value',data.bottletype) 

    }); 
}); 
JS; 
$this->registerJs($script); 
?> 

アクション今私はproductname.bottletype = bottlename.bottlenameとして商品名テーブルに関連しているbottlenameテーブルからデータを取得したいです。

ID、bottlename、単価:

bottlename

表は、3つのフィールドを有しています。

私が言及したコード上からPRODUCTNAMEbottlenameを取得しています。 W 私が欲しい帽子は、ユニットプライスを上記のデータとともに入手することです。以下は

は、私は今取得しています何のスクリーンショットです:

Here

答えて

1
あなたはProductnamesモデルにbottlenameから区別するために「bottlename」テーブルに「bottlename」関係(私はそれを呼び出すbottlenameRelationを持っている必要があり

フィールド):アクションで次に

public function getBottlenameRelation() { 
     return $this->hasOne(Bottlename::className(), ['bottlename' => 'bottletype']); 
} 

bottlenameRelationの参照を追加します。

public function actionGetForProduction($catid) 
{ 
     $bottle = Productnames::find()->with('bottlenameRelation')->where(['productnames_productname'=>$catid])->asArray()->one(); 
     echo Json::encode($bottle); 
} 

出力のjsonには、ボトルネームの関連フィールドが含まれます。

は完全を期すために、あなたも正しいHTTPヘッダーを追加し、このように出力JSONをできます

public function actionGetForProduction($catid) 
{ 
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
     $bottle = Productnames::find()->with('bottlenameRelation')->where(['productnames_productname'=>$catid])->asArray()->one(); 
    return $bottle; 
} 
+0

これは、出力の「単価」フィールドを示していません。出力は以前と同じです – Tanmay

+0

作業中です。とても感謝しています。 – Tanmay

関連する問題