gpt4 book ai didi

php - Kohana ORM 更新不工作

转载 作者:行者123 更新时间:2023-11-29 02:35:11 25 4
gpt4 key购买 nike

我在 2 天前发现了 Kohana,在遇到一些问题并设法解决它们之后,我遇到了一个非常奇怪的问题。当我尝试更新数据库中的条目时,ORM 没有更新条目,而是插入了一个新行。一切都类似于这个例子http://kohanaframework.org/3.0/guide/orm/examples/simple
我的代码( Controller 文件):

class Controller_Admin extends Controller {
...
public function action_test($id)
{
$inquiry = ORM::factory('inquiry')->where('Id', '=', $id)->find(); // $inquiry = Model_Inquiry($id) doesn't work, too
$inquiry ->Name = 'Someone';
$inquiry ->save();
}
...
}

模型文件:

class Model_Inquiry extends ORM
{
protected $_table_name = 'mytable';
}

您知道为什么要插入新条目而不是更新旧条目吗?我读到这是因为 ID 设置不正确,但我尝试使用固定值 (->where('Id', '=', 5)) 但它不起作用(它仍然插入了一个新行)。

提前致谢!

最佳答案

您的记录一开始就没有加载。要检查它是否已加载,请执行以下操作:

if ($inquiry->loaded()){...

此外,您还可以通过以下操作检查已运行的查询:

echo $inquiry->last_query();

因此您可以手动检查返回给 ORM 的内容。

这里的主要问题是您正在使用 save() 而不是更严格地使用 create()/update()。如果您使用 update(),ORM 会抛出一个异常,提示没有加载记录。

Save 基本上是这些方法的代理,依赖于加载状态。

(我假设您使用的是 Kohana 3.1,因为 3.0 ORM 根本没有单独的更新/创建方法)

关于php - Kohana ORM 更新不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6350470/

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