0

私はブログの割り当てをしなければなりません。その中で、誰かが投稿を追加したときにフィールドを更新する必要があります。このフィールドはusersテーブルにあり、その名前はno_of_postsです。誰かが何かを投稿した場合、ログインしているユーザーに関連するno_of_postsの値を取得してから、1ずつインクリメントし、データベースに更新する必要があります。

次のコードを試していますが、問題は解決していません。$ useridは、現在のユーザーIDを保持します。

$userid = $this->Auth->user('id');

$userpost = $this->User->query("SELECT no_of_posts FROM users WHERE id = '$userid'");

$userpost++;

$this->User->query("UPDATE users SET no_of_posts = '$userpost' WHERE id = '$userid'");

私もfindを使ってみましたが、役に立たなかった。

$userpost = $this->User->find('count', array('conditions'=>array('User.id'=>$userid)));

助けてくれてありがとう。

4

1 に答える 1

0

counterCache を調べる必要があります。Post モデルと User モデルの間の関係を適切に設定している限り (とにかくそうすべきです)、数行のコードを追加するだけで、Cake は自動的に投稿数を追跡します。

CakePHP クックブックのこのページを確認してください: http://book.cakephp.org/1.3/en/view/1033/counterCache-Cache-your-count


あなたの例で間違っていることについては、あなたが行うクエリ呼び出しは配列を返すため、更新クエリが失敗するのは論理的です。

それとは別に、query()メソッドを使用することは実際には CakePHP のやり方ではありません。CakePHP の全機能を使用していないため、モデルに関するクックブックのページをよく読む必要があります。私が意味するクックブックのページを見つけてください: http://book.cakephp.org/1.3/en/view/1000/Models

于 2012-04-11T07:11:52.153 に答える