質問: $this->Tweet->findById($id); } $this->set('data', $data['Post']); } public function delete($id) { $this->Tweet->delete($id); // idと合致するもののデータを削除する $this->redirect('index'); // indexにリダイレクトさせる } ``` edit.ctp ``` ツイートの編集 =$this->Form->create('Tweet', array('action' => 'edit')); ?> =$this->Form->input('content', array('label' => 'ツイート', 'value' => $data['content'])); ?> =$this->Form->hidden('id', array('value' => $user['id'])); ?> =$this->Form->end('編集する'); ?> ```
回答: $user['id']で取得できない場合、$user['User']['id']ではどうでしょうか。 もう試しているかもしれませんが、一度Debugger::dump($user);で中身を確認してみるといいと思います。 または、ログイン中のユーザー情報は、AuthComponent::user()で取得できます。 例えば、AuthComponent::user('id')でユーザーidが取得できます。 他にも、ログインに使ったテーブルのカラム名で、その情報が取得できます。 あと、ざっと気になった点を書いてみます。 関係なければスルーしてください。 ・$this->request->data['Post']にちゃんと値は入っていますか? ちゃんと値を取得できてはいるみたいですが・・・。 もしかして、$this->request->data['Tweet']ではないでしょうか。 ・新しくレコードを追加したい場合は、saveの前に$this->Tweet->create();を書くと安全です。 ・saveの時点でバリデーションが働くので、その前でsetやvalidatesは必要ありません。 ・下記のように、主キーや外部キー、(オートインクリメント)を指定しましょう。 ``` ALTER TABLE `tweets` ADD PRIMARY KEY (`id`); ALTER TABLE `tweets` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `tweets` ADD CONSTRAINT `tweets_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`); ```