我正在编写eZPublish的扩展,它有一个自己的eZPersistantObject,所以它需要一个自己的数据库表。
有没有办法提供一种setup.php或什么东西,它在扩展激活时运行并创建表?
感谢您的回复。
答案 0 :(得分:2)
eZ Publish在安装扩展程序时没有提供这样的功能(并且这并不是说您需要更改数据库中的内容才能这样做,只需要重新启动自动加载)。
关于您的问题,您唯一能做的就是在扩展程序中添加.dba文件,以便在管理界面中使用系统检查/升级时进行检查。可以使用bin / php中的ezsqldumpschema.php脚本生成该文件(您会注意到缺少一些内容,例如charset,...)
如果您的扩展程序提供了管理界面,请随意在每个视图的脚本开头添加一种pre_check函数。这应该根据dba文件检查表的存在,并在需要时创建它(或提示用户)。
答案 1 :(得分:0)
似乎在CMS中安装扩展程序时,您还需要手动执行更多步骤,例如对数据库进行更改。请参阅http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Installation/Extensions所以我认为eZPublish不支持这种设置。
您当然可以手动执行此操作,例如对每个请求执行CREATE TABLE IF NOT EXISTS
。一个肮脏的解决方案:将您的setup.php
放在扩展文件夹中的某个位置,使其可写,并在第一次执行后将其删除。只需在unlink(__FILE__);
的末尾添加setup.php
。
如果您想要一些更干净的解决方案,您可以拥有一个包含数据库迁移脚本的目录和一个跟踪哪些脚本已被执行的表。然后,在每个请求中,检查是否有新的迁移脚本并在必要时执行。