Drupal 7 Orphaned Node Ссылка при удалении узла - PullRequest
1 голос
/ 13 октября 2011

У меня есть 2 узла:

  • Проект
  • Ошибка

В проекте есть ссылки на узлы для ошибок

Когда я удаляюОшибка, эти ссылки на узлы остаются потерянными.Каков наилучший способ убрать это?

ОБНОВЛЕНИЕ (ЗДЕСЬ ЧТО Я ДЕЛАЛ)

function dc_project_management_node_delete($node)
{
    if ($node->type == 'bug_request')
    {
        $bug_request_nid = $node->nid;
        $milestone_ids = db_query('SELECT entity_id FROM {field_data_field_bugs_requests} WHERE field_bugs_requests_nid = :bug_request_nid', array(':bug_request_nid' => $bug_request_nid))->fetchCol();
        $milestones = entity_load('field_collection_item', $milestone_ids);

        foreach($milestones as $milestone)
        {
            for($k=0;$k<count($milestone->field_bugs_requests['und']);$k++)
            {
                if ($milestone->field_bugs_requests['und'][$k]['nid'] == $bug_request_nid)
                {
                    unset($milestone->field_bugs_requests['und'][$k]);
                }
            }

            entity_save('field_collection_item', $milestone);
        }
    }
}

1 Ответ

1 голос
/ 13 октября 2011

Если вы хотите ссылочную целостность сортов (т.е. связанные ошибки удаляются при удалении проекта), вы можете просто сделать это:

function mymodule_node_delete($node) {
  if ($node->type == 'project') {
    $bug_nids = array();
    foreach ($node->field_bugs[LANGUAGE_NONE] as $bug) {
      $bug_nids[] = $bug['nid'];
    }

    node_delete_multiple($bug_nids);
  }
}
...