我必须做博客作业。在其中我必须在有人添加帖子时更新字段。该字段位于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)));
感谢您的帮助。
答案 0 :(得分:0)
您需要查看counterCache。 只要您正确设置Post模型和用户模型之间的关系(无论如何),如果您只添加几行代码,Cake会自动跟踪您的帖子计数。
在CakePHP Cookbook中查看此页面:http://book.cakephp.org/1.3/en/view/1033/counterCache-Cache-your-count
至于你在你的例子中做错了什么:你做的查询调用会返回一个数组,所以你的更新查询失败是合乎逻辑的。
除此之外,使用query()
方法确实不是CakePHP的做事方式。你应该真正阅读关于模型的Cookbook页面,因为现在你没有使用CakePHP的全部功能。找到我在这里的食谱页面:http://book.cakephp.org/1.3/en/view/1000/Models