在 moodle 的 install.xml 中安装新插件时是否可以更改 table?
Is it possible to alter a table when you install a new plugin in the install.xml in moodle?
基本上,我需要在课程中添加一个新栏目table。
而且我不知道如何进行此更改,然后将模块导出到其他学校
没有在每个学校的每个数据库中执行"alter table"查询
谢谢!
对于全新安装,您可以使用 install.php 像课程 table 一样更改核心 table。在 install.xml.
之后立即调用 Install.php
首先获取添加字段代码
转到站点管理 -> 开发 -> xmldb 编辑器
加载并编辑 lib/db
然后编辑课程 table 并添加新字段。 虽然不要保存它。
然后查看 php 代码,select 添加新字段然后查看。
复制开头和结尾不带升级位的代码。然后将它添加到 local/yourplugin/db/install.php
,所以你应该有这样的东西:
defined('MOODLE_INTERNAL') || die;
function xmldb_local_yourplugin_install() {
global $DB;
$dbman = $DB->get_manager();
// Define field newfield to be added to course.
$table = new xmldb_table('course');
$field = new xmldb_field('newfield', XMLDB_TYPE_INTEGER, '1', null, null, null, null, 'cacherev');
// Conditionally launch add field newfield.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
}
基本上,我需要在课程中添加一个新栏目table。
而且我不知道如何进行此更改,然后将模块导出到其他学校
没有在每个学校的每个数据库中执行"alter table"查询
谢谢!
对于全新安装,您可以使用 install.php 像课程 table 一样更改核心 table。在 install.xml.
之后立即调用 Install.php首先获取添加字段代码
转到站点管理 -> 开发 -> xmldb 编辑器
加载并编辑 lib/db
然后编辑课程 table 并添加新字段。 虽然不要保存它。
然后查看 php 代码,select 添加新字段然后查看。
复制开头和结尾不带升级位的代码。然后将它添加到 local/yourplugin/db/install.php
,所以你应该有这样的东西:
defined('MOODLE_INTERNAL') || die;
function xmldb_local_yourplugin_install() {
global $DB;
$dbman = $DB->get_manager();
// Define field newfield to be added to course.
$table = new xmldb_table('course');
$field = new xmldb_field('newfield', XMLDB_TYPE_INTEGER, '1', null, null, null, null, 'cacherev');
// Conditionally launch add field newfield.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
}