Drupal 7 以编程方式创建节点时,节点_save()失败

Drupal 7 以编程方式创建节点时,节点_save()失败,drupal-7,nodes,taxonomy,drupal-taxonomy,taxonomy-terms,Drupal 7,Nodes,Taxonomy,Drupal Taxonomy,Taxonomy Terms,我试图通过编程方式创建一个节点,就像这样 $newNode = (object) NULL; $newNode->type = 'job'; $newNode->title = $data['JobTitle']; $newNode->uid = $user->uid; $newNode->created = strtotime("now"); $newNode->changed = strtotime("now"); $newNode->status

我试图通过编程方式创建一个节点,就像这样

$newNode = (object) NULL;
$newNode->type = 'job';
$newNode->title = $data['JobTitle'];
$newNode->uid = $user->uid;
$newNode->created = strtotime("now");
$newNode->changed = strtotime("now");
$newNode->status = 1;
$newNode->comment = 0;
$newNode->promote = 0;
$newNode->moderate = 0;
$newNode->sticky = 0;
$newNode->tid = 0;

$newNode->summary['und'][0]['value'] = $data['JobSummary'];
$newNode->body['und'][0]['value'] = $data['JobDescription'];
$newNode->field_employment_type['und'] = strtolower($data['JobType']);
$newNode->field_job_reference['und'][0]['value'] = $data['JobReference'];
$newNode->field_salary['und'][0]['value'] = "";
$newNode->field_salary_from['und'][0]['value'] = $data['SalaryFrom'];
$newNode->field_salary_to['und'][0]['value'] = $data['SalaryTo'];
$newNode->field_salary_override['und'][0]['value'] = $data['Salary'];
$newNode->field_application_email['und'][0]['value'] = $data['ApplicationEmail'];
$newNode->field_job_category['und'][2] = 2;
$newNode->field_job_category['und'][4] = 4;

//die(print_r($newNode));
// save node
node_save($newNode);
在这里,我可能有4种分类法可供选择(括号中标明了它们的id)、创意分类法(2)、技术分类法(3)、营销分类法(4)和客户服务分类法(6)

在节点_save上,我收到以下错误

500内部服务器错误:发生错误(23000): SQLSTATE[23000]:完整性约束冲突:1048列“tid” 不能为空


如何克服这个问题?我本以为将字段_job_category设置为分类的id就足够了?

Delete
$newNode->tid=0并准备对象:

$newNode = new stdClass();
$newNode->type = 'job';

node_object_prepare($node);

$newNode->title = $data['JobTitle'];
$newNode->uid = $user->uid;
$newNode->created = strtotime("now");
$newNode->changed = strtotime("now");
$newNode->status = 1;
$newNode->comment = 0;
$newNode->promote = 0;
$newNode->moderate = 0;
$newNode->sticky = 0;

$newNode->summary['und'][0]['value'] = $data['JobSummary'];
$newNode->body['und'][0]['value'] = $data['JobDescription'];
$newNode->field_employment_type['und'] = strtolower($data['JobType']);
$newNode->field_job_reference['und'][0]['value'] = $data['JobReference'];
$newNode->field_salary['und'][0]['value'] = "";
$newNode->field_salary_from['und'][0]['value'] = $data['SalaryFrom'];
$newNode->field_salary_to['und'][0]['value'] = $data['SalaryTo'];
$newNode->field_salary_override['und'][0]['value'] = $data['Salary'];
$newNode->field_application_email['und'][0]['value'] = $data['ApplicationEmail'];
$newNode->field_job_category['und'][]['tid'] = 2; // right syntax
$newNode->field_job_category['und'][]['tid']= 4;  // right syntax

//die(print_r($newNode));
// save node
node_save($newNode);

如果只想关联一个术语id:

$newNode->field_category[LANGUAGE_NONE][0]['tid'] = <actual term id>
$newNode->field\u category[语言\u无][0]['tid']=
如果要关联多个术语ID: 迭代您的术语ID数组,并增加索引。比如:

$newNode->field_category[LANGUAGE_NONE][0]['tid'] = <actual term id>
$newNode->field_category[LANGUAGE_NONE][1]['tid'] = <actual term id>
$newNode->field_category[LANGUAGE_NONE][2]['tid'] = <actual term id>
$newNode->field\u category[语言\u无][0]['tid']=
$newNode->field\u category[语言\u NONE][1]['tid']=
$newNode->field\u category[语言\u NONE][2]['tid']=
注意上面的索引值


并且,我通常为一个新节点设置以下属性集:

delete line
$newNode->tid=0虽然这样可以消除错误,但实际上并没有正确选择分类法,当我在管理区域中编辑节点时,没有选择任何作业类别分类法。