使用数据库视图=邪恶的化身?

时间:2013-06-05 作者:icc97

我正在进行WordPress插件开发,从中可以看出,我要么必须创建一个全新的插件,要么可以创建一个数据库视图。

客户端需要一些用户下载的简单日志,然后希望能够将这些日志导出到CSV。

日志记录很容易完成。我将日志导出到CSV的计划只是使用table export plugin 应该导出日志。客户对基本界面感到满意。

然而,日志被分为两个表,日志“类别”被合理地标准化为一个单独的表,但这对用户来说毫无意义。我可以通过数据库视图轻松解决此问题:

CREATE VIEW wp_my_evil_export_view AS 
SELECT  `e`.`id`, `l`.`log_name` as \'category\',`l`.`description`, `e`.`date`, `u`.`user_email` as \'email\', `e`.`text`
FROM    `wp_wls_entries` as `e`,
        `wp_wls_logs` as `l`,
        `wp_users` as `u`
WHERE   `e`.`log_id` = `l`.`id`
    AND `e`.`user_id` = `u`.`id`
然后,它在插件中显示为一个单独的表,客户端可以单击该表,并将其很好地导出为CSV。

然而,这让我觉得有点脏。这完全是一种黑客行为,在任何方面都完全没有WordPress,似乎没有人考虑在谷歌搜索中创建视图。

尽管如此,它很简单,除非底层插件更改其数据库结构,否则不太可能中断。

所以如果这是REALLY 糟糕的是,让这个问题成为对其他跌倒在这里的人的警告。

Otherwise does it make sense in this case or is there some other simple method I\'ve missed for solving this issue?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

在自定义表中,您可以随心所欲。如果您需要视图,请使用它。

但是,您可以考虑在导出器中分离代码。看见wp-admin/includes/export.php 首先。如果将实际SQL和导出格式分开,则可以:

轻松地为另一个表结构创建新的导出器使用相同格式的其他数据实现用户界面以自定义导出(CSV、编码、表和列的分隔符)plugin 你提到的不是这样的。此外,它甚至不使用export API接口。应该始终只有一个地方可以导出数据:“工具/导出”。

结束

相关推荐

Plugin: database creation

有人能告诉我这个函数有什么问题吗?function xattachments_db_install() { global $wpdb; $xattachments_db_version = \"1.0\"; $table_name = $wpdb->prefix .\"xattachments\"; $sql = \"CREATE TABLE IF NOT EXISTS \".$table_name. \" (