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

问题描述:

我必须做一个博客作业。在其中,我必须在有人添加帖子时更新字段。该字段位于用户表中,名称为no_of_posts。当某人发布某些内容时,应该检索与登录用户相关的no_of_posts的值,然后将其加1并更新回数据库。如何从数据库获取值并将修改后的值更新到cakephp中的数据库?

我想下面的代码,但它没有解决问题。 $ userid保存当前用户标识。

$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)));

感谢您的任何帮助。

你会想看看counterCache。 只要您正确设置了Post模型和User模型之间的关系(无论如何您都应该这样做),Cake会自动为您追踪帖子计数,只需添加几行代码即可。

入住此页面中CakePHP的食谱: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

+0

非常感谢你的工作..查询部分是我最后的努力,直到我尝试了很多其他的东西。 – 2012-04-11 07:27:12

+0

哪部分工作?修复查询或使用counterCache? 出于'正确的方式'观点,我希望你使用的是counterCache,这样,如果你构建了其他创建/删除的函数,你将永远不必考虑自己更新计数器帖子。 另外,你会介意接受这个答案吗?它会显示问题在索引中回答,因此人们不会解决问题。 – Joep 2012-04-11 07:33:44

+0

counterCache工作只需添加'counterCache'=> true属于数组并重命名表中的字段。 – 2012-04-11 08:29:47