如何构建db_select,->条件,将drupal中的字段与php中的值进行比较

2uluyalo  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(389)

我试图用php中sql的结果创建一个字段。我试图用“manifestaciontype”字段创建一个条件,并与值“compuesta”进行比较。
问题是我不知道该怎么做。我认为问题是n.manifestaciontype无法访问此字段的实际值,并且从不进行比较。我尝试了一些类似['und']['value']的东西,使用->节点,但是没有任何效果!!!我不知道要建这个。我太失望了!
这是我的密码:

$query = db_select('node', 'n')
        ->fields('n', array('nid', 'title'))
        ->condition('n.type', 'manifestacion_cultural', '=')
        ->condition('status', 1,'=')
    **->condition('n.manifestacionType', 'compuesta', '=')**
                ->orderBy('title');
$result = $query->execute()->fetchAllKeyed();
return $result;

这样做的结果是没有什么,如果我删除**中的条件,我将收到status=1(publicated)的所有“manifestacion\u cultural”。我需要添加一个过滤器,它的条件是只接收'manifestaciontype'(this a field)='compuesta'。最有可能有一些更好的解决方案创建一个领域或方法来做这个查询,但我不知道如何。
非常感谢!

rekjcdws

rekjcdws1#

我不知道我是否正确地回答了你的问题,所以,如果不符合你的要求,请纠正我:
您有一个名为“manifestacion type”的字段,然后您希望获得那些内容类型为“manifestacion\u cultural”且“manifestacion type”字段值等于“compuesta”的节点结果。
在这种情况下,您需要使用节点表和“manifestacion type”字段表之间的联接构建一个db\u select,请访问您的数据库并检查“manifestacion type”字段表的名称,drupal总是这样创建一个字段表:field\u data\u fiel\u machine\u 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();

相关问题