Eru*_*nen 9 drupal drupal-7 drupal-modules
我有一个模块,以编程方式将大量节点添加到我的Drupal 7站点.为了防止重复,我想检查系统中是否已存在新创建的节点的标题.永远不会出现两个节点具有相同名称的情况.我尝试过使用node_load(),但这似乎不允许我根据标题加载节点.
我很难理解如何继续,所以我想知道这里的人是否可以帮助我.
总结:如何检查具有特定标题的节点是否已存在?
谢谢.
Pie*_*yle 18
节点是实体,因此您可以使用EntityFieldQuery类来查询它们.这样,您就不必费心将信息存储在数据库中.并且,您是否需要根据字段值添加其他过滤器,代码演变将很容易.
$result = (new EntityFieldQuery())
->entityCondition('entity_type', 'node')
->propertyCondition('title', $title)
->execute();
$title_is_unique = empty($result['node']);
Run Code Online (Sandbox Code Playgroud)
您可以使用SQL查询获取所有节点标题,例如:
$row = db_query('SELECT nid FROM {node} WHERE title = :mytitle', array(':mytitle' => $myNewTitle))->fetchField();
if(!isset($row['nid'])) {
//safe to continue
} else {
//that title is already there and its in node with node id "nid"
}
Run Code Online (Sandbox Code Playgroud)
如果没有结果返回,那么你可能会认为你很高兴.
或者,您可以编辑节点表以使标题字段为UNIQUE并处理MySQL抛出的错误.不知道那是多么可行.