【问题标题】:Lithium PHP Framework - SQL Insert Ignore / If not existsLithium PHP 框架 - SQL 插入忽略/如果不存在
【发布时间】:2013-09-02 10:45:23
【问题描述】:

有没有办法使用 INSERT IGNORE 和/或 IF NOT EXISTS 语句执行 Lithium Model::save() 函数?

这样做的唯一方法是执行 RAW-SQL-Statements。但这将违反设计......所以任何帮助都会很棒。

感谢您的建议。

/现实

【问题讨论】:

  • 你想在这里解决什么问题? Model::create() 不会命中数据库,只会实例化一个新的模型对象。
  • 是的,很清楚。直到 model::save() 数据库上什么都没有发生。这就是问题所在。如果发现重复键,SQL 将引发异常。我只是想避免这种情况。

标签: php mysql model entity-relationship lithium


【解决方案1】:

除非您执行原始 SQL,否则无法使用 Lithium 执行此操作。您可以看到锂\数据\源\数据库对象仅支持“INSERT INTO ...”。

不支持此功能的原因是保存新对象会自动填充对象的主键 (id),而 INSERT IGNORE 确实会使问题复杂化。

最好的策略是根据键值运行 SELECT,然后丢弃任何具有匹配记录的值。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 2012-03-28
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多