2012-04-18 4 views
0

あるテーブルから別のテーブルにデータ行をコピーします。私がコピーしたいテーブルはID、名前、パスワードフィールドを持っています。値をコピーするテーブルには、id、name、password、post_countフィールドがあります。cakephpのあるテーブルから他のテーブルにデータベース行をコピーするには

私は以下のコードを使用しようとしていますが、それは役に立たない。

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

私は何をすべきですか?

私はすでに値をコピーしたいテーブルの検証を削除しました。事前に

おかげ

+0

親愛のフローズンヨーグルトは、すべての原因に関しては、あなたがあなたの(レジスタから 'register'と' user'モデルにアクセスすることができます/何のエラーメッセージが表示され、あなたがなど –

+0

に直面している問題を私達に言うことができます)コントローラ? '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

findクエリはid、name、passwordのようにフィールド全体を返しますが、これらの値をすべて保存すると保存されます。名前とパスワードのみ保存する必要があり、他のフィールドは保存しないでください。 –

+0

@ froyo.maxでこれをチェックできます... – thecodeparadox

1

、いくつかの異なる形式でデータを返す$this->Register->find(null, $id);クエリ。代わりに私はクエリを変更しました。コードは、find(「最初」)のリターンが我々のニーズに従って変更することができますし、我々は、Userモデルのsaveメソッドを呼び出すことができる配列を返すようにこの作品

$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

私はあなたのために働いていない理由は、その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); 
} 
関連する問題