resory 2012-11-07 18:32:49 5507次浏览 6条回复 2 0 0

大家好。我想问个问题。就是有一个master(主表),有一个detail(从表).顾名思义。detail表示更随着master的。然后我们现在有一个view.就叫index.php把。 里面同时显示master表与detail表内容.比如master中有一个名叫字段name,age,sex. detail有字段shoe,shoesize等等。假设我们查询一个用户名叫resory的。然后得到下面的数据

master :
name        age        sex
resory        20          man

detail:
shoe        shoesize
adidas         43
nike              44
361               43

index.php中的master表,detail表都可以新增修改, 问题是现在只能通过一个按钮把新增或者修改的数据保存到数据库中。 思路应该是怎样的?大家帮帮忙解决!谢谢!

  • 回复于 2012-11-07 20:36 举报

    看下模型的关联那块吧

  • 回复于 2012-11-07 22:30 举报

    看看模型中的relation关联模型的用法
    写法如下:Master模型

    public function relations(){
        return array(
            'detail'=>array(self::HAS_ONE,'Detail','master_id'),
        );
    }
    

    简单示例如下:
    $master = Master::model()->find(“name=:name",array(':name'=>'resory'));
    $mater->detail->shoe或者$mater->detail->shoesize来调用关联的detail的值,或者修改
    然后调用 $master->save();$mater->detail->save();来保存

  • 回复于 2012-11-07 23:15 举报

    嗯!那如何在一个form拥有master和detail表的数据。而这个form中还可以增加和修改detail表。。然后只有一个button提交。。这样的form应该怎么写。

  • 回复于 2012-11-07 23:17 举报

    嗯!那如何在一个form拥有master和detail表的数据。而这个form中还可以增加和修改detail表。。然后只有一个button提交。。这样的form应该怎么写。

  • 回复于 2012-11-08 00:13 举报

    view表单

    <?php $form=$this->beginWidget('CActiveForm'); ?>
    //$master
    <?php echo $form->textField($master,'name')?>
    <?php echo $form->textField($master,'age')?>
    // ... 
    //$master->detail
    <?php echo $form->textField($master->detail,'shoe')?>
    <?php echo $form->textField($master->detail,'shoesize')?>
    <?php echo CHtml::submitButton('submit');?>
    <?php $this->endWidget();?>
    

    controller简单处理

    $master->attributes = $_POST['Master'];
    $master->detail->attributes = $_POST['Detail'];
    if($master->validate() && $master->detail->validate()){
          $master->save();
          $master->detail->save();
    }
    
您需要登录后才可以回复。登录 | 立即注册