我想将一行数据从一个表复制到另一个表。我要复制的表有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);
}
我该怎么办?
我已经删除了要将值复制到的表格的验证。
提前致谢
答案 0 :(得分: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方法。
答案 1 :(得分: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);
}
答案 2 :(得分: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);
}