【问题标题】:Pimcore - How to create custom table via custom plugin?Pimcore - 如何通过自定义插件创建自定义表?
【发布时间】:2017-03-01 10:01:04
【问题描述】:

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

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

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

但是如何以我没有得到的 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;
    }

希望这个问题有意义。

【问题讨论】:

标签: php mysql pimcore


【解决方案1】:

然后您将希望在您的数据库上实际执行该查询。 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。

【讨论】:

  • 嗨@Josh Palan,感谢您的回答,我已经这样做了,但这里的问题是我的安装方法没有调用,如果我只在安装方法中正确回显它仍然没有显示,因为方法没有调用.不知道问题:(
  • 当你说它没有被调用时,你的意思是当你点击扩展面板中的绿色安装按钮时?应该有两个选项,一个用于启用,一个用于安装。启用后,插件会检查其 isInstalled 方法以查看插件是否被视为安装。如果它返回 true,则该按钮将像一个红色的 x 卸载按钮。如果它返回 false,您应该可以选择单击绿色安装按钮。这样做应该调用 install 方法...
  • 有什么消息吗?如果我的回答有帮助,请随时将其标记为正确答案。
  • 接受了!!但我的安装方法仍然没有被调用。我创建了自定义插件!然后从上传我上传它。但未调用安装方法
  • 上传后需要确保已启用。启用后,您应该可以选择单击绿色的“加号”安装按钮。那是调用 install 方法的时候;不是在你上传它的时候,不是在你启用它的时候,只有通过点击安装按钮。
猜你喜欢
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
相关资源
最近更新 更多