Pimcore - 如何通过自定义插件创建自定义表?

时间:2017-03-01 10:01:05

标签: php mysql pimcore

我正在尝试创建 pimcore自定义插件

我浏览了它的文档,到目前为止我已经创建了demo插件并且工作正常。

现在我想通过插件创建自定义表,并且需要在自定义表中存储数据,但是不知道如何实现这一点? 我知道在plugin.php中 - >安装方法,我们需要定义数据库相关的查询

但是如何以pimcore的方式编写那些我没有得到的查询。

我已经尝试过以下代码:

 public static function install()
    {
       // sql to create table
        $sql = "CREATE TABLE MyGuests (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
        firstname VARCHAR(30) NOT NULL,
        lastname VARCHAR(30) NOT NULL,
        email VARCHAR(50),
        reg_date TIMESTAMP
        )";
        // implement your own logic here
        return true;
    }

希望这个问题有意义。

1 个答案:

答案 0 :(得分:2)

您希望然后在您的数据库上实际执行该查询。当用户在“扩展”面板中单击插件的安装按钮时,将调用Install方法。您的查询看起来不错,但您现在需要实际运行它。尝试这样的事情:

$db = \Pimcore\Db::get();
$sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP
    )";
$db->query($sql);
return true;

不是只返回true,而是检查以确保创建表是个好主意。你可以尝试这样的事情:

$result = $db->describeTable("MyGuests");
if($result){
    return true;
}
else{
    return false;
}

但是还有很多其他检查方法可以确保它成功。

更新

如果您只有红色卸载按钮,则需要调整插件的isInstalled方法。插件决定是否运行安装或卸载方法,具体取决于插件是否报告已安装。如果isInstalled方法返回true,则可以选择卸载。如果返回false,您可以选择安装。

那就是说,你应该检查以确保你的isInstalled方法中存在该表,并相应地返回true或false。