Table update/insert 使用 phalcon 框架重复数据
Table update/insert duplicate data using phalcon framework
我有以下数据库table
+----+---------+------+-------+
| 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。
例如:1000、1002、1004、1006 ...
如果我 运行 raw SQL 会发生同样的事情。
我做错了什么吗?
更新#1
我激活了 SQL 查询日志,它同时 运行ning 2 个查询,所以值重复,但我不知道为什么会这样。
在此link https://forum.phalconphp.com/discussion/274/model-save-create-two-records中建议检查一个table与主,但已经存在,这是id字段。
发生错误是因为 Phalcon 需要一个 .htaccess
文件来将所有请求重定向到 index.php
。使用 Google Chrome,默认情况下它会尝试从站点的根目录加载 favicon.ico
文件,但由于该文件不存在,它被定向到 index.php
又加载了一次。
可以肯定的是,我将 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= [L]
</IfModule>
我有以下数据库table
+----+---------+------+-------+
| 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。
例如:1000、1002、1004、1006 ...
如果我 运行 raw SQL 会发生同样的事情。 我做错了什么吗?
更新#1
我激活了 SQL 查询日志,它同时 运行ning 2 个查询,所以值重复,但我不知道为什么会这样。
在此link https://forum.phalconphp.com/discussion/274/model-save-create-two-records中建议检查一个table与主,但已经存在,这是id字段。
发生错误是因为 Phalcon 需要一个 .htaccess
文件来将所有请求重定向到 index.php
。使用 Google Chrome,默认情况下它会尝试从站点的根目录加载 favicon.ico
文件,但由于该文件不存在,它被定向到 index.php
又加载了一次。
可以肯定的是,我将 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= [L]
</IfModule>