表使用phalcon框架更新/插入重复数据

时间:2017-05-27 02:46:01

标签: php phalcon

我有以下数据库表

+----+---------+------+-------+
| id | title   | code | views |
+----+---------+------+-------+
| 1  | Video 1 | abc  | 1000  |
+----+---------+------+-------+
| 2  | Video 2 | def  | 2000  |
+----+---------+------+-------+
| 3  | Video 3 | ghi  | 3000  |
+----+---------+------+-------+

模型Videos.php

<?php

use Phalcon\Mvc\Model;

class Videos extends Model {

    public $id;
    public $title;
    public $code;
    public $views;

}

和控制器IndexController.php

<?php

use Phalcon\Mvc\Controller;

class IndexController extends Controller {

    public function indexAction(){

        $watch = Videos::findFirst(3);

        // add +1 to video views
        $watch->views = $watch->views + 1;

        // update video data
        $watch->save();

        // output video data to view
        $this->view->watch = $watch;

    }

}

以上代码应在所选视频的视图中添加+1,但始终添加+2。

Ex:1000,1002,1004,1006 ......

如果我运行原始SQL,则会发生同样的事情。 我做错了吗?

更新#1

我激活了SQL查询日志,它同时运行了2个查询,因此值重复,但我不知道为什么会这样。

在此链接中,https://forum.phalconphp.com/discussion/274/model-save-create-two-records建议检查具有主要表的表,但已经存在,这是id字段。

1 个答案:

答案 0 :(得分:0)

此回复的解决方案 https://stackoverflow.com/a/35770447/2587280

发生错误是因为Phalcon需要一个.htaccess文件,将所有请求重定向到index.php。使用Google Chrome时,默认情况下会尝试从网站的根目录加载favicon.ico文件,但由于该文件不存在,因此会将其定向到再次加载的index.php。< / p>

要确定,我将style.css文件重命名为不存在的名称。未应用网页样式,Chrome检测未返回404错误,并且文件响应中包含完整的index.php代码。

为了解决这个问题,我添加了一个RewriteCond,验证该文件不是favicon.ico

Options -Indexes

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !favicon.ico

    RewriteRule ^(.*)$ index.php?_url=$1 [L]

</IfModule>