如何修复Drupal 7中由node_load()引起的“ EntityMalformedException”?

时间:2019-06-20 15:20:55

标签: php mysql apache drupal

我一直在尝试从数据库中加载一个我有需求的节点,但是我不断得到一个EntityMalformedException。这是我得到的错误:

  

EntityMalformedException :类型节点的实体上缺少捆绑属性。在 entity_extract_ids()中( C:\ Apache24 \ htdocs \ devrevolution \ includes \ common.inc 中的 7947 行)。

我在Windows 10上使用Drupal 7.67,MySQL 5.7和Apache 2。node_load()在该项目中使用了数百次,没有任何问题,但是在某种程度上,我无法正常使用该功能返回一个节点而不会引发此异常。我知道EntityFieldQuery是在Drupal 7中从数据库检索节点的首选方法,但是当我尝试以下操作时,它没有从数据库检索任何内容。

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
      ->propertyCondition('type', 'study')
      ->fieldCondition('field_sname', 'value', $study_name, '=')
      ->addMetaData('account', user_load(1))
      ->execute();

该字段存在,并在field_sname表中填充了nid,但由于某种原因它未检索到该节点。


我已经检查了节点是否确实存在于节点表中,然后使用以下内容从数据库中检索了nid。我已确保该节点也具有修订版本ID,因为这会给其他节点造成问题。该代码可以获取正确的nid,但是到达node_load($nid)时会引发异常。我知道node_load引起了错误,因为没有这一行,就没有错误。

function get_study_information($study_name)
{
    // Retrieve the node nid with the study name from the database
    $query = db_query(
        'SELECT n.nid AS nid '. 
        'FROM {node} n '.
        'WHERE title = :studyname AND type = :study',
        array(':studyname' => $study_name,
              ':study' => "study"));

    $nid = $query->fetchAssoc()['nid'];
    $node = node_load($nid);
    return $node;
}

0 个答案:

没有答案