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代码>虽然这样可以消除错误,但实际上并没有正确选择分类法,当我在管理区域中编辑节点时,没有选择任何作业类别分类法。