0

yii 框架中,我正在做一个小应用程序。我的数据库中有两个名为products and sales Product 表的表是这样的

 ================
      product
   ================
   +   id          +
   + product_name  +
   + cost_price    +
   +selling_price  +
   + created_by    +
   + updated_by    +
   + created_at    +
   + updated_at    +
   +++++++++++++++++


   =================
          Sales
   =================
   + id            +
   + product_id     +
   + price          +
   + created_by    +
   + updated_by    +
   + created_at    +
   + updated_at    +
   +++++++++++++++++

对于上述所有两个表,我已经从 gii 工具(crud)中完成了模型和控制器,之后我只是在销售模型中建立了关系。关系是这样的

  public function relations()
  {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
      'product' => array(self::HAS_MANY,'Products','product_id'),
    );
  }

之后,我只是在销售模型中渲染了 Products 模型。销售控制器操作创建是这样的

 public function actionCreate()
  {
    $model=new Sales;
    $products = new Products;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Sales'], $_POST['Products']))
    {
      $model->attributes=$_POST['Sales'];
      $products->attributes = $_POST['Products'];
      $valid = $model->validate();
      $valid = $products->validate();

      if($valid)
      {
        $products->save(false);
        $model->product_id = $products->getPrimaryKey();
        $model->save(false);

        $this->redirect(array('view','id'=>$model->id));
      }
    }

    $this->render('create',array(
      'model'=>$model,
      'products' =>$products,
    ));
  }

并且鉴于我正在渲染这样的文件

<div class="row">
    <?php echo $form->labelEx($products,'product_name'); ?>
    <?php echo $form->dropdownList($products,'product_name', CHtml::listData(Products::model()->findAll(), 'id', 'product_name'), array('empty'=>array('choose'=>'---Select One---'))); ?>
    <?php echo $form->error($products,'product_name'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'price'); ?>
    <?php echo $form->textField($model,'price'); ?>
    <?php echo $form->error($model,'price'); ?>
  </div>

在这里,我正在做产品表中所有可用产品的下拉列表。之后,当我保存总表格时。

sales 表中的 product_id 显示为 NULL。当从下拉列表中选择所选产品时,我希望在该位置使用外键。请告诉我我在哪里做错了。任何帮助和建议都将是非常可观的。谢谢

4

1 回答 1

0

做这样的事情

<?php echo $form->dropdownList($products,'product_name', CHtml::listData(Products::model()->findAll(), 'id', 'product_name'), array('id'=>'productType','name'=>'productType'))); ?>

你的隐藏变量

<?php echo CHtml::hiddenField('productTypeId','',array('class'=>'ProductTypeId')); ?>

以及选择 id 的 javascript 代码

 $('#listingType').change(function(){
        var productid=$('#productType').val()
        $(".ProductTypeId").val(productid);
         });

在控制器动作中

public function actionCreate(){
     $productId=$_POST['productTypeId'];
     //code to store in sales table 
}
于 2013-07-13T10:57:52.437 回答