gpt4 book ai didi

php - 无脂框架; SQL Mapper 插入两次

转载 作者:行者123 更新时间:2023-11-29 07:43:19 24 4
gpt4 key购买 nike

当我尝试为自己构建一个基于 F3 的 SQL Mapper 的框架时,出现了一个奇怪的问题。

当我尝试将行插入 MySQL 数据库时,它被插入两次。我通过将 echo 放入 beforeinsert 方法中进行了最简单的调试,该方法被触发一次。那么...我做错了什么导致行数加倍?

Controller (具体代码):

$faq = new \FaqModel();
$faq->question = $params['q'];
$faq->answer = $params['a'];
$faq->save();
$id = $faq->get('_id');
if (isset($id))
$this->status = 'success'; // this is shown
else
$this->status = 'nope, not working';

FaqModel.php(是的,这里什么都没有)

class FaqModel extends \BaseModel
{
public function __construct()
{
parent::__construct('faq');
}
}

BaseModel.php(我想在这里,但是 beforeinsert() 被调用一次):

abstract class BaseModel extends \DB\SQL\Mapper
{
public function __construct($table)
{
$f3 = \Base::instance();
$this->db=new \DB\SQL(
'mysql:host='.$f3->get('db_host').';port='.$f3->get('db_port').';dbname='.$f3->get('db_name'),
$f3->get('db_user'),$f3->get('db_pass'));
parent::__construct($this->db,DB_PREFIX.$table);
$this->table = DB_PREFIX.$table;
$this->beforeinsert(function($me) {
echo 'before insert <br/>';
$me->createdAt = date('Y-m-d H:i:s');
});
echo 'construct <br/>';
}
// some loading methods here not related to problem
}

输出很简单:

construct
before insert
success

并且网络嗅探器中没有显示重定向。但我仍然得到数据库重复的行。

<小时/>

编辑:

好吧,现在比以前更奇怪了。我连续执行了两个添加请求。发生的事情是:

1) 在第一次请求时,添加了两行:

41  testing         db_testing  2015-02-13 09:08:21     2015-02-13 09:08:21
42 testing db_testing 2015-02-13 09:08:21 2015-02-13 09:08:21

2) 根据第二个请求,添加了行:

43  testing         db_testing  2015-02-13 09:10:53     2015-02-13 09:10:53
44 another_test db_why 2015-02-13 09:11:04 2015-02-13 09:11:04
45 another_test db_why 2015-02-13 09:11:05 2015-02-13 09:11:05

我不知道发生了什么。

最佳答案

你到这个特定 Controller 的路由怎么样?您是否可以在 GET 请求上执行此操作?某些浏览器会在实际 GET 请求之前发送额外的 HEAD 请求。框架会自动处理该问题,调用 GET Controller ,插入行一次,然后仅减少对 header 的响应。然后是 GET 请求,它再次执行所有操作,产生第二行。这可以解释你的应用程序的行为。

如果是这样,您可以添加检查并查看 F3 VERB var 是否包含 GET 来绕过 HEAD 请求。

关于php - 无脂框架; SQL Mapper 插入两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com