2017-03-01 45 views
1

我正在尝试创建pimcore自定义插件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; 
    } 

希望这个问题是有意义的。

+0

这是否有帮助:http://stackoverflow.com/a/42159793/988957 – campino2k

回答

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; 
} 

但还有很多其他的检查方式来确保它是成功的。

UPDATE

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

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

+0

嗨@Josh Palan,感谢您的回答,我已经这样做了,但问题在于我的安装方法没有调用,如果我只是对回声在安装方法仍然没有显示,因为方法没有调用。不知道这个问题:( –

+0

当你说它没有被调用时,你的意思是当你点击扩展面板上的绿色安装按钮时?应该有两个选项,一个用于启用,一个用于安装。一旦启用,插件会检查它的isInstalled方法,看看这个插件是否被认为是安装的,如果它返回true,那么这个按钮就像是一个红色的x卸载按钮,如果它返回false,你应该选择点击一个绿色的安装按钮。应该调用安装方法... –

+0

任何消息?如果我的答案帮助,请随时将其标记为正确的答案 –