gpt4 book ai didi

CakePHP 1.3 : proper way to insert or update records

转载 作者:行者123 更新时间:2023-12-02 00:07:00 26 4
gpt4 key购买 nike

我正在使用 CakePHP 1.3,如果新记录是新的,我将在一个循环中插入新记录(几到几千条),或者更新现有记录(如果它们已经存在)。但是我保存的方式不检查记录是否已经存在;相反,我在每条记录中分配了一个主键值。我分配的这个 ID 保证是唯一的。如果此 ID 不存在,CakePHP 似乎知道插入,否则更新。

但是,我不确定我的做法是否正确。我读了here如果我在循环中创建新记录,我需要执行$this->create(),我在我知道每条记录都将是唯一的其他功能。我不在这里这样做,因为它似乎可以正常工作,而且我不需要检查每条记录是否存在。

我要插入或更新的每个记录数组都有键 id,指示相应表中的主键,每个数组包含正确关联的两个模型的数据。

例如

$this->saveAll($myData);

Array
(
[MyModel] => Array
(
[id] => 123
[xyz] => ...
...
)
[MySecondModel] => Array
(
[id] => 789
[my_model_id] => 123
[qwe] => ...
...
)
)

我在做什么好,或者我是否需要检查是否存在,然后在 $this->create() 之后进行检查(如有必要)?

最佳答案

如果您打开 SQL 调试,您将看到,如果您在 save() 之前指定一个 ID,Cake 会从数据库中获取记录。如果记录存在,Cake 将执行更新,否则执行插入;为 ID 指定 NULL 会强制插入。所以你所做的很好。

如果您不填充所有列,create() 很重要;否则数据将保留在对象中,您最终会将数据从一条记录溢出到另一条记录。 create 只是重置内部数据结构。

您不需要在save() 之后检查您的数据是否存在,除非您真的很偏执。但是,确实检查save() 的结果;如果它返回 false,则说明出了问题。

关于CakePHP 1.3 : proper way to insert or update records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750838/

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