Pimcore - 如何通过自定义插件创建自定义 table?
Pimcore - How to create custom table via custom plugin?
我正在尝试创建 pimcore 自定义插件。
我浏览了它的文档,到目前为止我已经创建了演示插件并且它工作正常。
现在我想通过插件创建自定义 table 并需要将数据存储在自定义 table 中,但不知道如何实现? 我知道在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;
}
希望问题有道理。
然后您将想要在您的数据库上实际执行该查询。 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;
不只是 return 为真,检查以确保 table 已创建是个好主意。你可以尝试这样的事情:
$result = $db->describeTable("MyGuests");
if($result){
return true;
}
else{
return false;
}
但是还有很多其他方法可以检查以确保它成功。
更新
如果您只有红色的卸载按钮,您需要调整插件的 isInstalled 方法。插件根据插件是否报告已安装来决定是 运行 安装还是卸载方法。如果您的 isInstalled 方法为 returning true,您将可以选择卸载。如果它是 returning false,您将可以选择安装。
也就是说,您应该检查以确保 table 存在于您的 isInstalled 方法中,并相应地确定 return true 或 false。
我正在尝试创建 pimcore 自定义插件。
我浏览了它的文档,到目前为止我已经创建了演示插件并且它工作正常。
现在我想通过插件创建自定义 table 并需要将数据存储在自定义 table 中,但不知道如何实现? 我知道在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;
}
希望问题有道理。
然后您将想要在您的数据库上实际执行该查询。 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;
不只是 return 为真,检查以确保 table 已创建是个好主意。你可以尝试这样的事情:
$result = $db->describeTable("MyGuests");
if($result){
return true;
}
else{
return false;
}
但是还有很多其他方法可以检查以确保它成功。
更新
如果您只有红色的卸载按钮,您需要调整插件的 isInstalled 方法。插件根据插件是否报告已安装来决定是 运行 安装还是卸载方法。如果您的 isInstalled 方法为 returning true,您将可以选择卸载。如果它是 returning false,您将可以选择安装。
也就是说,您应该检查以确保 table 存在于您的 isInstalled 方法中,并相应地确定 return true 或 false。