如何从数据库中获取值并将修改后的值更新为cakephp中的数据库?

时间:2012-04-11 06:30:21

标签: php database cakephp cakephp-1.3

我必须做博客作业。在其中我必须在有人添加帖子时更新字段。该字段位于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)));

感谢您的帮助。

1 个答案:

答案 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