如何从数据库获取值并将修改后的值更新到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
非常感谢你的工作..查询部分是我最后的努力,直到我尝试了很多其他的东西。 – 2012-04-11 07:27:12
哪部分工作?修复查询或使用counterCache? 出于'正确的方式'观点,我希望你使用的是counterCache,这样,如果你构建了其他创建/删除的函数,你将永远不必考虑自己更新计数器帖子。 另外,你会介意接受这个答案吗?它会显示问题在索引中回答,因此人们不会解决问题。 – Joep 2012-04-11 07:33:44
counterCache工作只需添加'counterCache'=> true属于数组并重命名表中的字段。 – 2012-04-11 08:29:47