【发布时间】:2014-12-07 18:08:53
【问题描述】:
我正在创建 Joomla3 组件,我需要在安装过程中创建一些虚拟内容,我知道我可以使用 sql 文件来填充表格,但这主要适用于特定于我的组件的自定义创建的表格。当我想向#__content 表中添加某些内容时出现问题,如果有人尝试多次安装该组件,则“别名”列不被认为是唯一的,并且可能会出现重复的条目。 我想知道将记录插入#__content 表的最佳方法是什么,而不必担心重复条目等附带损害。 谢谢大家!
【问题讨论】:
我正在创建 Joomla3 组件,我需要在安装过程中创建一些虚拟内容,我知道我可以使用 sql 文件来填充表格,但这主要适用于特定于我的组件的自定义创建的表格。当我想向#__content 表中添加某些内容时出现问题,如果有人尝试多次安装该组件,则“别名”列不被认为是唯一的,并且可能会出现重复的条目。 我想知道将记录插入#__content 表的最佳方法是什么,而不必担心重复条目等附带损害。 谢谢大家!
【问题讨论】:
解决方案 1:
您可以使用INSERT IGNORE,这样在多次安装扩展时就不会担心重复条目。
解决方案 2: 在 Joomla 中提供了组件可以拥有的脚本文件。
因此,当安装/更新/卸载扩展时,joomla 会触发或调用扩展脚本文件中可用的某些预定义函数,例如安装、更新、预检、后检等。
你可以在你的扩展脚本中添加install method并在这个方法上执行这个sql文件,这样就不会在扩展更新的情况下调用它
解决方案 3: 您可以在数据库中为此任务维护一个单独的表,当您执行此虚拟内容创建时,您可以在数据库中标记它,并且您可以在启动虚拟内容创建之前检查此步骤是否已经完成,以便当有人安装此扩展多次此检查将阻止同一任务一次又一次地执行。
【讨论】: