在moodle的install.xml中安装新插件时,是否可以更改表?

在moodle的install.xml中安装新插件时,是否可以更改表?,moodle,Moodle,基本上,我需要在课程表中添加一个新列 我不知道该如何更改,然后将模块导出到其他学校 不需要在每个学校的每个数据库中执行“alter table”查询 谢谢 对于新安装,可以使用install.php修改核心表,如课程表。Install.xml之后立即调用Install.php 首先获取add字段代码 转到站点管理->开发->xmldb编辑器 加载和编辑lib/db 然后编辑课程表并添加新字段但不要保存它。 然后转到“查看php代码”,选择“使用新字段添加字段”,然后选择“查看” 复制代码,在开始

基本上,我需要在课程表中添加一个新列

我不知道该如何更改,然后将模块导出到其他学校

不需要在每个学校的每个数据库中执行“alter table”查询


谢谢

对于新安装,可以使用install.php修改核心表,如课程表。Install.xml之后立即调用Install.php

首先获取add字段代码

转到站点管理->开发->xmldb编辑器

加载和编辑lib/db

然后编辑课程表并添加新字段但不要保存它。

然后转到“查看php代码”,选择“使用新字段添加字段”,然后选择“查看”

复制代码,在开始和结束时不带升级位。然后将其添加到
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);
    }
}

谢谢这正是我需要的!