控制器无法插入到yii的通知表中

时间:2015-09-03 04:52:08

标签: php mysql yii notifications

所以我有一个主表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 ;

1 个答案:

答案 0 :(得分:3)

我在代码中找不到任何错误。

Bellow是我调试上述任务的假设

  1. 可能$_POST['Comment']['post_id']未提供该值。
  2. 打印过帐值并检查您是否获得了所有必要的值。

     print_r($_POST['Comment']);
    
  3. $notif之前验证save()模型。如果你的模型有,它会显示验证错误。

    echo CActiveForm::validate($notif);
    
  4. 您可以更好地编写上面的代码,如下所示。

        $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();
            }
        }