首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nGen文件字段从ExpressionEngine 1升级到ExpressionEngine 2

使用nGen文件字段从ExpressionEngine 1升级到ExpressionEngine 2
EN

Stack Overflow用户
提问于 2012-10-24 08:49:40
回答 5查看 1.5K关注 0票数 10

我即将执行ExpressionEngine v1到ExpressionEngine v2的升级,并将大量数据存储在nGen文件字段中。

要使此数据在EE2 SafeCracker文件字段中正常工作,需要在升级前和升级后执行哪些步骤?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-24 08:58:57

升级到EE2后,找到每个前一代文件字段,并将其字段类型更改为文件,然后运行以下EE2查询:

代码语言:javascript
复制
UPDATE exp_channel_data
SET field_id_X = CONCAT('{filedir_Y}', field_id_X)
WHERE field_id_X != ''
AND field_id_X NOT LIKE '{filedir_%'

将“X”替换为您的文件字段的ID (可以从exp_channel_fields获取),将Y替换为nGen文件字段设置为的上载首选项ID。

如果您在EE1中安装了矩阵,请升级到矩阵2/EE2,并对任何ex-nGen File列执行相同的操作,使用以下SQL查询:

代码语言:javascript
复制
UPDATE exp_matrix_data
SET col_id_X = CONCAT('{filedir_Y}', col_id_X)
WHERE col_id_X != ''
AND col_id_X NOT LIKE '{filedir_%'

同样,X ==您的矩阵列ID (您可以从exp_matrix_cols获得),Y ==您的上传偏好ID。

(当然,这要归功于Rob Sanchez。)

票数 21
EN

Stack Overflow用户

发布于 2012-10-31 04:57:13

我也为一个网站写了这篇文章--这里没有矩阵支持,但它对常规字段快速而正确地工作。

对于阵列,左列是升级前更改为文本的每个字段ID,需要更改为升级后的文件ID,右侧是要附加到字段的文件上载目录的filedir_X的X

代码语言:javascript
复制
// Insert file upload directories

$array = array(
    '16' => '1',
    '22' => '1',
    '121' => '3',
    '58' => '1',
    '67' => '1',
    '68' => '1',
    '71' => '1',
    '76' => '1',
    '78' => '1',
    '94' => '1',
    '99' => '1',
    '108' => '3',
    '109' => '3',
    '110' => '3',
    '139' => '1'
    );

foreach($array as $field_id => $dir_id) {

    $q_entries = $this->EE->db->query("SELECT entry_id, field_id_{$field_id} as 'field' from exp_channel_data where field_id_{$field_id} != '' order by entry_id asc");

        if ($q_entries->num_rows() > 0) {

            echo '<h3>field_id_'.$field_id.'</h3>';

            foreach($q_entries->result_array() as $entry) {

                echo $entry['entry_id'];

                $filename = trim('{filedir_'.$dir_id.'}'.$entry['field']);

                echo ' - '.$filename.'<br/>';

                $data = array(
                    'field_id_'.$field_id => $filename,
                    );
                $sql = $this->EE->db->update_string('exp_channel_data', $data, "entry_id = '{$entry['entry_id']}'");
                $this->EE->db->query($sql);

            }
        }

}

echo 'done';
票数 6
EN

Stack Overflow用户

发布于 2012-10-24 09:10:09

我有一整篇关于这方面的博客文章,这是基于我的经验和Brandon在他的回答中提到的主题。Blog post here

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13041491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档