我需要开发一个模块,将站点的“论坛主题”(一种内容类型)转换为另一个内容类型为“操作”的节点的评论。论坛主题和节点“动作”有一个共同的分类术语。所以我开始在数据库中搜索我需要的值,从表'node','user'......在我在表'comment'中创建db_insert之后。
function mymodule_entry_insert($entry) {
$select = db_select('node', 'n');
$select->join('users','u','u.uid = n.uid');
$select->fields('n', array('nid', 'title', 'created'));
$select->fields('u', array('name'));
$select->condition(db_or()->condition('n.type', 'forum', '='));
// Return the result in object format.
return $select->execute()->fetchAll();
$fields = array(
'nid' => $select->fields('n', array('nid')),
'uid' => $select->fields('n', array('uid')),
'subject' => $select->fields('n', array('title')),
'hostname' =>'::1',
'created' => $select->fields('n', array('created')),
'changed' => $select->fields('n', array('created')),
'status' => '1',
'language' => 'und',
'thread' => '01/',
'name' => $select->fields('u', array('name')),
'mail' => '',
'homepage' => '',);
try {
$return_value = db_insert('comment')
->fields($fields)
->execute();
}
catch (Exception $e) {
drupal_set_message(t('db_insert failed. Message = %message, query= %query',
array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
}
return $return_value;
}
在互联网上搜索了几天之后,我还没有找到任何似乎很容易的解决方案。我没有丰富的经验。该模块的第二部分是将前论坛的评论转换为已创建的新评论的子评论。所以我必须按 nid 对评论进行分组('该评论的节点是回复'),除了一个(父亲,旧论坛)之外的所有评论都必须插入他们父亲的 cid('主键')在“pid”列中发表评论(这条评论是回复的评论 cid)
第三部分是获取与论坛相同期限的节点的id,并更改受影响评论的nid。
我希望我能够以与第一部分相同的方式开发第二部分和第三部分。
谢谢 :)