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

于 2012-04-11T07:11:52.153 回答