繁体   English   中英

通过yii2中的javascript获取相关模型

[英]Get related model through javascript in yii2

我通过javascript和Productnames控制器中的操作从表中获取行。

我得到的字段是productidproductnamebottletype 到目前为止,还好。

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);
?>

行动 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);
    }

现在,我想从与产品名称表相关的瓶子 名称表中获取数据,作为productname.bottletype = bottlename.bottlename

bottlename包含3个字段:

ID,瓶名,单价。

我从上面提到的代码中获得productnamebottlename 我要获得的是单价以及上述数据。

下面是我现在得到的屏幕截图:

这里

您应该在Productnames模型中具有与'bottlename'表的'bottlename'关系(我将其称为bottlenameRelation来与bottlename字段区分开):

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将包含瓶名关系字段。

为了完整起见,您可以通过这种方式输出json,同时添加正确的HTTP标头:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM