(请原谅我糟糕的英语。) 我有 3 个表,例如 Blog、User 和 user_blog。
博客
CREATE TABLE `Blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
用户
CREATE TABLE `User` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
用户博客
CREATE TABLE IF NOT EXISTS `user_blog` (
`user_id` int(11) NOT NULL,
`blog_id` int(11) NOT NULL,
PRIMARY KEY (`user_id`,`blog_id`)
) ENGINE=InnoDB;
我已经在各自的AR模型中声明了他们的关系。
Blog.php
public function relations() {
return array(
'users' => array(self::MANY_MANY, 'User', 'user_blog(blog_id, user_id)'),
);
}
User.php
public function relations() {
return array(
'blogs' => array(self::MANY_MANY, 'Blog', 'user_blog(user_id, blog_id)'),
);
}
现在,我认为以下代码:
<?php
$data = CHtml::listData(User::model()->findAll(), "id", "name");
echo $form->dropDownList($blog,'users', $data, array('multiple'=>'multiple', 'size' => '5'));
?>
通过上面的代码,成功创建了一个多选的下拉列表,并成功从数据库中检索数据,并成功突出显示了应该选择的项目。
但是问题来了。我不知道如何实现保存/更新功能。无论我选择什么选项,结果都不会保存回数据库。
有人可以帮忙吗? 预先感谢您。
最佳答案
您应该使用 CRUD 生成器或自己这样做:
Controller :
public function actionUpdate($id)
{
$model = $this->loadModel($id, 'User');
if(isset($_POST['User']))
{
$model->setAttributes($_POST['Message']);
if($model->validate())
{
if($model->save()) {
//do something here, eg. view updated record
}
}
}
$this->render('update',array('model'=>$model));
}
查看/update.php
<?php $form = $this->beginWidget('GxActiveForm', array(
'id' => 'user-form',
));
?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model, 'username', array('maxlength' => 32)); ?>
<?php echo $form->error($model,'username'); ?>
</div><!-- row -->
...
...
<div class="row">
<?php echo $form->labelEx($model,'users'); ?>
<?php
$data = CHtml::listData(User::model()->findAll(), "id", "name");
echo $form->dropDownList($blog,'users', $data, array('multiple'=>'multiple', 'size' => '5'));
?>
<?php echo $form->error($model,'users'); ?>
...
...
<?php
echo GxHtml::submitButton(Yii::t('app', 'Save'));
?>
请阅读以下内容:http://www.yiiframework.com/doc/guide/1.1/en/form.overview
关于drop-down-menu - Yii - 从具有多项选择的下拉列表中将数据保存回多对多关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782766/