Yii - 在3个表之间保存数据

时间:2015-05-14 22:12:41

标签: php forms model-view-controller yii saving-data

我正在与Yii和jQuery Mobile合作。我目前有3个表:Users,Projects和ShareProjects。我已经能够创建一个函数来显示与该用户共享的项目,但我很难将用户分配给项目。我试过这段代码,但到目前为止都没有成功。

public function actionShareProjects() {  
   $model=new SharedProjects;
   if(isset($_POST['SharedProjects'])) {
      $model->attributes=$_POST['SharedProjects'];
      $model->project_id = "project_id";
      $model->user_id = "user_id";
      $model->sharedProject_id = "";
      $model->sharedCreateDate= date('Y-m-d G:i:s');
      if($model->save()) {
         echo json_encode(array('action'=>'success', 'message'=>''));
      } else {
          echo json_encode(array('action'=>'error', 'message'=>'Incorrect'));
      }
   }
}

在项目中,有一个获取项目ID的共享按钮,但我试图允许用户为您要共享的用户键入电子邮件。

我尝试在邮递员上手动输入但是失败了,没有出现错误但没有保存数据。我使用了正确的输入:

SharedProjects [user_id] 
SharedProjects [project_id] 
SharedProjects [sharedProject_id]
SharedProjects [sharedCreateDate]

2 个答案:

答案 0 :(得分:0)

将您的代码更改为此

public function actionShareProjects() {  
   $model=new SharedProjects;
   if (isset($_POST['SharedProjects'])) {
      $model->attributes=$_POST['SharedProjects'];
      $model->sharedCreateDate= date('Y-m-d H:i:s');
      if($model->save()) {
         $this->sendResponse(array('action'=>'success', 'message'=>''));
      } else {
         $this->sendResponse(array('action'=>'error', 'message'=>'Incorrect'));
      }
   }
}

并确保project_iduser_id已设置并且属于int类型。要更好地发送JSON响应,可以添加此功能

public function sendResponse($data)
{
    header('Content-Type: application/json; charset=utf-8');
    echo CJSON::encode($data);
    exit;
}

在你的控制器中并调用它来发送响应。

答案 1 :(得分:-1)

如果没有出现错误,那么您的数据适合您的模型的规则验证,但可能是在保存数据库时创建错误,

您是否在表格的列上应用了任何约束(例如唯一,非空)。它们也限制在表中保存错误的数据。