在yii2上如何在下拉选择时显示数据库列值

baubqpgj  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(151)

我使用的是Yii2,我有两个表和两个模型:table 1: tenderprice:(id, itemname, quanity)(id is primary key),型号名称= Tenderprice,表2:tenderpricelist:id pk,singleprice, totalprice,tenderpriceid: (tenderpriceid is foreign key refers to Tenderprice),型号名称:Tenderpricelist现在我想要的数量时,itemname是选择:

<?
    $itemtenders=Tenderprice::find()->all();
     $itemlist=ArrayHelper::map($itemtenders,'id','itemname');
     echo $form->field($model, 'tenderpriceid')->dropDownList($itemlist,['prompt'=>'Select tender'])->hint('Please choose item one by one')->label('Add Items');
     ?>
     // inserting data into tenderpricelist based on the selection of table tenderprice
      <?= $form->field($model, 'singleprice')->textInput(['maxlength' => true])->hint('Please enter your price') ?>

    <?= $form->field($model, 'totalprice')->textInput(['maxlength' => true]) 
?>

现在,我想根据从下拉列表中选择的项目名称将数据插入tenderpricelist表。下拉列表可以正确填充,但当选择项目名称时,我无法访问“数量”列的值。我只想当我从下拉列表中选择项目名称时,其相应的数量将显示在文本框或标签上,并且我的表tenderpricelist中的totalprice列将为:总价

totalprice=quantity *singleprice

注:单价在tenderprice表中,数量在父表tenderprice中。

1szpjjfi

1szpjjfi1#

最好的选择是在从$form中获取信息后,在controller(如果您的验证需要数量值)或model(如果验证不需要数量值)中进行处理。在那里,在验证和保存之前,您可以使用由以下公式给出的值进行操作:

  • $_GET ($tenderId = Yii::$app->response->get('FormName['tenderpriceid']))
  • $_POST ($tenderId = Yii::$app->response->post('FormName['tenderpriceid']))

“FormName”,您必须通过查看调试来查看它。一旦您获得$tenderId,您可以进行数据库查询并找到数量:
$quantity = Tenderprice::find()->one()->where(['id' => $tenderId]);
然后你可以把这个值传递给保存或更新选项。让我知道这是否有效,或者请发布模型和控制器。

相关问题