2013-07-13 2 views
0

yii framework에서 작은 응용 프로그램을 수행하고 있습니다. 내가 products and sales 제품 테이블로 이름을 내 데이터베이스에 두 개의 테이블이 어디 내가 방금 만든 그 후 GII 도구 (CRUD) 에서 모델과 컨트롤러를 수행 한 모든 위의 두 테이블의 경우이Yii Framewok 외래 키 저장소 드롭 다운 목록에서 선택한 경우

================ 
     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 + 
    +++++++++++++++++ 

같은 것입니다 판매 모델의 관계. 관계는 다음과 같습니다.

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> 

같은 파일을 렌더링하고있다. 그 후에 내가 할 때 전체 양식을 저장하십시오.

NULL을 표시하는 product_id 내부 판매 테이블. 선택한 제품을 드롭 다운에서 선택하면 해당 위치에 외래 키가 필요합니다. 내가 잘못하고있는 곳을 친절하게 말해줘. 어떤 도움이나 제안이라도 대단히 감사 할 것입니다. 감사합니다

+0

드롭 다운에서 항목을 선택하면 어떤 작업을하고 싶습니까 ?? – Ninad

+0

@Ninad 제품의 참조 키 (외래 키)를 데이터베이스에 저장하려고합니다. – NewUser

+0

제품을 선택하면 다음과 같은 의미가됩니다. ex : Iphone이 ID가 참조되는 판매 항목의 ID 또는 Db에 해당 ID를 저장 하시겠습니까? – Ninad

답변

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

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

를 선택하는 자바 스크립트 코드

public function actionCreate(){ 
    $productId=$_POST['productTypeId']; 
    //code to store in sales table 
} 
관련 문제