この質問とこれも確認しました。この質問で説明されているモデルを実装しようとしています。
私がしたいのは、メッセージコントローラーの追加機能で、スレッドテーブルにレコードを作成し(このテーブルには主キーと自動インクリメントのフィールドが1つしかありません)、そのIDを取得してメッセージテーブルに挿入することです既に持っているユーザー ID を message_read_state および thread_participant テーブルに保存します。
これは私がスレッドモデルでやろうとしていることです:
function saveThreadAndGetId(){
//$data= array('Thread' => array());
$data= array('id' => ' ');
//Debugger::dump(print_r($data));
$this->save($data);
debug('id: '.$this->id);
$threadId = $this->getInsertID();
debug($threadId);
$threadId = $this->getLastInsertId();
debug($threadId);
die();
return $threadId;
}
$data= array('id' => ' ');
上記の関数のこの行は、スレッド テーブルに行を追加しますが、ID を取得できません。IDを取得する方法はありますか、それとも間違って保存していますか?
最初は、メッセージ コントローラーでクエリを実行していました。
$this->Thread->query('INSERT INTO threads VALUES();');
しかし、lastId関数が手動クエリでは機能しないことがわかったので、元に戻しました。