我正在研究YII框架,我是新手。 我有用户注册表,如下所示:
用户名:[文本框]
电子邮件:[文本框]
地址:[文字区]
用户贷款类型:(复选框列表如下)
状态[是/否]
现在我有3个型号:
1)用户(用户数据)
2)LoanType(仅适用于贷款类型清单)
3)UserLoanType(用户和贷款类型之间的映射)
所有3个模型都有HAS_MANY和BELONGS_TO关系,就像我们在YII中一样。
现在,当用户点击注册按钮时,我也希望将数据保存在user_loan_type表中。我可以简单地在actionCreate中添加核心php逻辑。但是,有没有任何标准的YII练习?因为我需要验证,在编辑期间保留选择的表格等。任何人都可以指导我如何做到这一点吗?或者指出任何示例链接,我用Google搜索但没有帮助。
感谢。
我可以在数据库中保存数据, 现在在编辑期间,我想要检索第3个表(tbl_user_loan_request_type)数据。我使用了下面的代码。
$user = User::model()->findByPk(5);
print_r($user->UserLoanTypes);
但它给了我空白数组。 哪里我错了?
答案 0 :(得分:1)
你可以在你的类中定义afterSave方法 像这样:
模型用户
public function relations()
{
return array(
'UserLoanTypes' => array(self::MANY_MANY, 'LoanType', 'UserLoanType(userId, loanId)'),
);
}
// relation
array('UserLoanTypes', 'safe'),
// label
'UserLoanTypes' => 'User Loan Type'
protected function afterSave()
{
parent::afterSave();
UserLoanType::model()->deleteAll('userId=:id', array(':id' => $this->id));
foreach ($this->UserLoanTypes as $loanId) {
$userLoanType = new UserLoanType();
$userLoanType->userId = $this->id;
$userLoanType->loadId = $loadId;
$userLoanType->save();
}
}
protected function afterDelete()
{
parent::afterDelete();
UserLoanType::model()->deleteAll('userId=:id', array(':id' => $this->id));
}
表格:
<div class="row">
<?php echo $form->labelEx($model,'UserLoanTypes'); ?>
<?php echo $form->checkBoxList($model,'UserLoanTypes', CHtml::listData($LoanTypes, 'id', 'loanName')); ?>
<?php echo $form->error($model,'UserLoanTypes'); ?>
</div>
在视图中你可以:
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'id',
'name',
'UserLoanTypes' => array(
'name' => 'UserLoanTypes',
'value' => implode(',', CHtml::listData($model->UserLoanTypes, 'id', 'name')),
),
),
)); ?>
答案 1 :(得分:0)
如果您不需要为一个用户分配多个loanType,则会更容易。您只需要表单可视化的用户模型:
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'user-form',
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'Username'); ?>
<?php echo $form->textField($model,'Username'); ?>
<?php echo $form->error($model,'Username'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'Email'); ?>
<?php echo $form->textField($model,'Email'); ?>
<?php echo $form->error($model,'Email'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'Address'); ?>
<?php echo $form->textArea($model,'Address'); ?>
<?php echo $form->error($model,'Address'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'UserLoanType'); ?>
<?php echo $form->checkBoxList($model,'idLoanType', CHtml::listData(LoanType::model()->findAll, 'id', 'name')); ?>
<?php echo $form->error($model,'UserLoanTypes'); ?>
</div>
<?php $this->endWidget(); ?>