2012-04-18 2 views
0

Я хочу скопировать строку данных из одной таблицы в другую. В таблице, которую я хочу скопировать, есть идентификаторы, имена, поля пароля. Таблица, в которой должны быть скопированы значения, имеет поля id, name, password, post_count.Как скопировать строку базы данных из одной таблицы в другую таблицу в cakephp

Я пытаюсь использовать следующий код, но его не помогает.

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

Что мне делать?

Я уже удалил проверки таблицы, где я хочу скопировать значения в.

Заранее спасибо

+0

Уважаемый сэр Froyo, при всем уважении, не могли бы вы сказать нам, что сообщение об ошибке отображается/проблемы вы столкнулись и т.д. –

+0

вы в состоянии получить доступ к '' register' и модели user' от вашего (регистр) контроллер? Через 'App :: import()' или через ассоциации – Ross

ответ

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); 
} 
+0

Не отображается сообщение об ошибке и ничего не копируется из одной таблицы в другую. –

+0

Запрос на поиск возвращает все поле i.e id, name, password и при сохранении всех этих значений сохраняются. Необходимо сохранить только имя и пароль, а не другие поля. –

+0

@ froyo.max позволяет проверить это ... – thecodeparadox

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

Это работает как возвращение находки («первый») возвращает массив, который может быть изменен в соответствии с нашими потребностями, а затем мы можем вызвать метод модели пользователя сохранения.

0

Я думаю, причина, по которой это не работает для вас, заключается в том, что запись реестра по этому идентификатору не существует. Вы должны проверить, не содержат ли данные данные перед тем, как их сохранить. Вот почему вы получаете NULL, NULL в инструкции INSERT.

$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); 
} 
Смежные вопросы