在yii framework我正在做一个小应用程序。我的数据库中有两个名为products and sales
的表
产品表就是这样的
================
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'),
);
}
之后我只在Sales模型中渲染了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>
这里我正在进行products表中所有可用产品的下拉列表。在那之后我正在做保存总表格。
sales_id里面的sales_id显示为NULL。当从下拉列表中选择所选产品时,我希望在该位置使用外键。请告诉我我做错了什么。任何帮助和建议都会非常明显。谢谢
答案 0 :(得分: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
}