我如何建立db_select->条件比较使用PHP在drupal中将字段与值进行比较

时间:2018-07-22 00:25:31

标签: php mysql drupal drupal-7

im试图用php中的sql结果创建一个字段。我正在尝试使用“ manifestacionType”字段创建条件并与值“ compuesta”进行比较。

问题是我不知道这样做。我认为问题是n.manifestacionType不能访问该字段的真实值,并且从不进行比较。我用-> node尝试了['und'] ['value']之类的东西,但是没有任何作用!!!我不知道建立这个。我太绝望了!

这是我的代码:

function reverseString(str) {
  let newString = "";
  for (let i = str.length - 1; i + 1 > 0; i--) {
    newString = newString + str[i];
  }
  return (newString);
}
console.log(reverseString("hello there"));

这没有任何结果,如果我删除了**中的条件,我将收到状态为= 1(已公开)的所有“ manifestacion_cultural”。我需要添加一个过滤器,该过滤器的条件是仅通过“ manifestacionType”(此字段)=“ compuesta”才能接收。很有可能有一些更好的解决方案可用于创建字段或执行此查询的方法,但我不知道如何。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我不知道我是否正确理解了您的问题,因此,如果不是您想要的内容,请纠正我的问题:

您有一个名为“ manifestacion Type”的字段,然后您希望获取那些内容类型为“ manifestacion_cultural”且“ manifestacion Type”字段值等于“ compuesta”的节点结果。

在这种情况下,您需要使用节点表和“ manifestacion Type”字段表之间的联接来构建db_select,请访问您的数据库并检查“ manifestacion Type”字段表的名称,drupal始终创建像这样的字段表:field_data_fiel_machine_name

$query = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->condition('n.type', 'manifestacion_cultural', '=')
  ->condition('status', 1, '=');
  ->join('fiel_data_manifestacionType_table', 'mt', 'n.nid = mt.nid'); 
  ->condition('mt.fiel_manifestacionType_value', 'compuesta', '=');
  ->orderBy('n.title', 'ASC');

$result = $query->execute()->fetchAllKeyed();