所以我有一个主表comment
,它有很多字段。然后
我想在将新记录插入notifications
表时将一些字段插入comment
表。
在控制器中,我最初有这个,它适用于comment
表:
public function actionCreate() {
$model = new Comment;
if (isset($_POST['Comment'])) {
$model->attributes = $_POST['Comment'];
if ($model->save())
$this->redirect(array('view', 'id' => $model->comment_id));
}
$this->render('create', array(
'model' => $model,
));
}
然后我为notification
表添加了更多行。但它没有用。
public function actionCreate() {
$model = new Comment;
$notif = new Notifications;
if (isset($_POST['Comment'])) {
$model->attributes = $_POST['Comment'];
$notif->peg = 'nofriani';
$notif->tanggal = new CDbExpression("NOW()");
$notif->notif = ' mengirimkan berita ';
$notif->isi = $_POST['Comment']['post_id'];
$notif->link = 'links';
$notif->save();
if ($model->save())
$this->redirect(array('view', 'id' => $model->comment_id));
}
$this->render('create', array(
'model' => $model,
));
}
comment
表的功能仍然有效。但是notifications
表的那个没有。我试图重新安排位置但没有发生任何事情。我还将$notif->save();
更改为$notif->insert();
但仍未发生任何事情。我错过了什么?
这是表结构:
CREATE TABLE IF NOT EXISTS notifications (
id_notif int(11) NOT NULL AUTO_INCREMENT,
tanggal date NOT NULL,
peg varchar(30) NOT NULL,
notif text NOT NULL,
isi varchar(30) NOT NULL,
link varchar(255) NOT NULL,
PRIMARY KEY (id_notif)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
答案 0 :(得分:3)
我在代码中找不到任何错误。
Bellow是我调试上述任务的假设
$_POST['Comment']['post_id']
未提供该值。 打印过帐值并检查您是否获得了所有必要的值。
print_r($_POST['Comment']);
在$notif
之前验证save()
模型。如果你的模型有,它会显示验证错误。
echo CActiveForm::validate($notif);
您可以更好地编写上面的代码,如下所示。
$model = new Comment;
$notif = new Notifications;
if (isset($_POST['Comment']))
{
$model->attributes = $_POST['Comment'];
if ($model->validate() && $model->save())
{
$notif->peg = 'nofriani';
$notif->tanggal = new CDbExpression("NOW()");
$notif->notif = ' mengirimkan berita ';
$notif->isi = $_POST['Comment']['post_id'];
$notif->link = 'links';
if($notif->validate() && $notif->save())
{
$this->redirect(array('view', 'id' => $model->comment_id));
}
else
{
echo CActiveForm::validate($notif);
Yii::app()->end();
}
}
else
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}