0

我想将一行数据从一个表复制到另一个表。我要复制的表有 id、name、password 字段。应复制值的表具有 id、name、password、post_count 字段。

我正在尝试使用以下代码,但它没有帮助。

$data=$this->Register->find(null, $id);
if($this->User->save($data)) {
    $this->Session->setFlash(__('Data copied'), true);
}

我应该怎么办??

我已经删除了我要将值复制到的表的验证。

提前致谢

4

3 回答 3

1

该查询$this->Register->find(null, $id);以某种不同的格式返回数据。相反,我更改了查询。代码如下

$condition = array('id'=>$id);
$data=$this->Register->find('first', array('conditions'=>$condition));
$newdata = array(
            'User' => array(
                'name' => $data['Register']['name'],
                'password' => $data['Register']['password']
       )
);
if($this->User->save($newdata)) {
      $this->Session->setFlash(__('Data copied'), true);
}

这可以作为 find('first') 的返回返回一个数组,该数组可以根据我们的需要进行修改,然后我们可以调用 User 模型的 save 方法。

于 2012-04-19T05:12:34.060 回答
0

我认为这对您不起作用的原因是该 ID 的注册记录不存在。在尝试保存之前,您必须检查结果是否包含数据。这就是您在 INSERT 语句中得到 NULL,NULL 的原因。

$record = $this->Register->findById($id);
if(!empty($record))
{
   $this->User->create();
   if($this->User->save(array('User'=>$record['Register']),false,array('name','password')))
   {
      $this->Session->setFlash(__('Data copied'), true);
   }
}
else
{
   $this->Session->setFlash(__('Data not found'), true);
}
于 2012-04-20T01:56:45.713 回答
0
$data = array();
$data = $this->Register->read(null, $id);

$newdata = array();
$newdata = array(
          'User' => array(
                      'name' => $data['Register']['name'],
                      'password' => $data['Register']['password']
                   )
        );
// If you are in Register controller then import User model 

if($this->User->save($newdata, false)) {
    $this->Session->setFlash(__('Data copied'), true);
}
于 2012-04-18T09:07:37.397 回答