【发布时间】:2020-01-16 22:21:09
【问题描述】:
我有一个奇怪的问题,我正在尝试更新我的 SQL 数据库中的一个条目,当我增加列的值并保存它时它一直加 1。
例如,我+= 1对一个条目的现有值2,结果是3,但是保存时它在数据库中记录为4...
列结构为 int(20) 无符号。
PHP:
$quantity = 1;
$item = \App\item::find($item_id);
$item->items_sold += $quantity;
$item->save();
如果我dd($item->items_sold)结果是正确的,并且值改变了指定的量。但是,当我检查数据库时,该值增加了指定的数量,然后再次增加了 1...
任何帮助将不胜感激!谢谢你:)
【问题讨论】:
-
你可能会运行这个 sn-p 两次吗?没有看到上下文,或者你如何执行它,这个问题仍然没有答案。
-
它在一个运行一次的控制器中,我在保存后立即死亡和转储,还有一个额外的 exit() 以确保:)
-
这里没有任何东西表明它应该增加两次。所以这是我们需要更多信息的东西,你需要进一步调试它。例如,如果您将之前和之后的值附加到数组中,然后在
save()之后再次获取它,然后用这两个值和新对象(刚从数据库中)转储该数组,您会看到如果它增加一两次。还要记住,即使控制器执行一次,控制器也可能以某种方式被调用两次。 -
我的猜测是,当您认为只运行一次脚本时,您会以某种方式运行脚本两次。请在这段代码附近添加一些日志记录,并检查它是否真的为您的每个 +2 增量运行一次(例如,在
$item->save语句之前添加一个 error_log 调用并重新运行它。然后检查服务器日志/php- fpm 日志以获取线索)。