2014-12-07 75 views
0

我创建Joomla3组件,我需要在安装过程中创建一些虚拟内容,我知道我可以使用sql文件来填充表,但是这主要适用于自定义创建的表,我的组件。问题出现在我想向#__content表添加内容时,'别名'列不被认为是唯一的,并且如果有人尝试多次安装组件,则可能会出现重复条目​​。 我想知道什么是插入记录到#__content表中的最佳方式,而不必担心重复条目等附带损害。 谢谢大家!为Joomla3组件创建虚拟内容

回答

1

解决方案1: 您可以使用INSERT IGNORE,以便多次安装扩展时不会担心重复条目。

解决方案2: 在Joomla中有一个组件可以提供的脚本文件。

因此,当扩展安装/更新/卸载时,joomla会触发或调用扩展脚本文件中提供的某些预定义函数,如安装,更新,预检,postflight等。

您可以在扩展脚本添加install method和执行这种方法这个SQL文件,以便这不会对扩展的更新情况被称为

解决方案3: 您可以在数据库中该保持一个单独的表任务,并且当您执行此虚拟内容创建时,您可以在数据库中标记此内容,并且您还可以在启动虚拟内容创建之前检查此步骤是否已完成,以便有人多次安装此扩展时,此检查将阻止相同的任务一次又一次执行。

+0

解决方案1.恐怕这不起作用,因为检查重复项的唯一列是主键'id',并且我在没有此字段的情况下插入新记录(有自动增量,所以会自动创建)。由于“别名”字段不受UNIQUE限制,因此不会为IGNORE指令创建任何错误消息,最终它将使用相同的数据创建额外的记录。 我想我会用类似于解决方案3的东西,我需要检查,如果这个数据导入过程已经执行,然后决定做什么。 感谢您的帮助! – ArturoO 2014-12-07 18:41:56

+0

插入忽略将只与唯一列一起工作,因此如果表中没有唯一比此解决方案独立的列不适用于您。 很高兴帮助:) – Nick 2014-12-08 04:20:22