2012-02-28 9 views
0

別のフィールド値のモデルレコードIDを設定できますか?他の方法で別のフィールドのID値を設定する

updateそれなし)、1つのまたは2行にこのコードを混在さ:

$this->Model->create($data); 
$this->Model->save(); 

$this->Model->create($data); // create again 
$this->Model->set('link', $this->Model->id); // get record id 
$this->Model->save(); // update 

感謝を。

+2

私はあなたがあなたの質問を明確にする必要があるとしていると思います。 – Dave

+0

申し訳ありませんが、十分なコードがありません。なんでしょう? 2回$ this-> model? – craphunter

+0

@Dave:おそらく、テーブルにデータを挿入するときに、 'id'を持っています。このidを別の列の値に設定したいとします。例えば、' id' = 10、 'title' = 'Post'、 'text' = 'HelloWorld'、 'link' = 10 – mrdaliri

答えて

0

はい、適切なモデルメソッドを適切に呼び出す必要があります。また、保存するために渡す配列に情報が正しく格納されていることを確認する必要があります。つまり、レコードをplacesテーブルに追加するとします。さんがあなたのスキーマは次のようになりましょう:

CREATE TABLE 'places' (
`id` CHAR(36) NOT NULL, 
`reference_id` CHAR(36) NULL, 
`name` VARCHAR(50) NOT NULL, 
PRIMARY KEY (`id`) 
); 

は、その後、あなたが持っている以下:

$data['Place']['name'] = 'New York'; 

// create the first record to get the PK ID that will 
// be used in the reference_id of the next record 

$this->Place->create(); 
$this->Place->save($data); 

// set the reference ID to the ID of the previously saved record 
$data['Place']['reference_id'] = $this->Place->id; 

// create the next record recording the previous ID as 
// the reference_id 
$this->Place->create(); 
$this->Place->save($data); 
+0

はい、2番目の' save'はレコードを 'update'することを意味します。それじゃない? – mrdaliri

+0

2つの理由のため、いいえ。 1-前のレコードのプライマリキーである 'id 'を渡していない($ data [' Place '] [' id ']'がないので、何を更新するのか分からない。 $ this-> Place-> create();は、新しいレコードを作成していることを示しますが、どちらのレコードも真でない場合は更新されますが、両方とも真であるため新しいレコードが保存されます。 –

関連する問題