2010-01-11 12 views
2

我在Drupal中创建的视图中获取重复节点。看来问题与在node_access表的视图中完成连接的方式有关。节点访问/视图:domain_site和domain_id域的功能

使用devel的,我看到了下面的查询:

SELECT node.nid AS nid, 
      node.language AS node_language, 
      node_data_field_weekend.field_weekend_value AS node_data_field_weekend_field_weekend_value, 
      node_data_field_weekend.field_weekend_value2 AS node_data_field_weekend_field_weekend_value2, 
      node.type AS node_type, 
      node.vid AS node_vid, 
      node_data_field_weekend.field_weekend_loc_nid AS node_data_field_weekend_field_weekend_loc_nid 
     FROM node node 
LEFT JOIN content_type_wwme_weekends node_data_field_weekend ON node.vid = node_data_field_weekend.vid 
INNER JOIN node_access na          ON na.nid = node.nid 
    WHERE (na.grant_view >= 1 AND 
      (
      (na.gid = 0 AND na.realm = 'all') OR 
      (na.gid = 0 AND na.realm = 'domain_site') OR 
      (na.gid = 0 AND na.realm = 'domain_id'))) AND 
      (
      (
      (node.type IN ('wwme_weekends')) AND 
      (node.status <> 0 OR 
      (node.uid = 0 AND 0 <> 0) OR 0 = 1)) AND 
      (DATE_FORMAT(STR_TO_DATE(node_data_field_weekend.field_weekend_value, '%Y-%m-%dT%T'), '%Y-%m-%d') > '2010-01-10')) 
    ORDER BY node_data_field_weekend_field_weekend_value ASC LIMIT 0, 5 

的加入到node_access表导致其他记录复制,因为有多个node_access记录到一个节点,一个与domain_site境界和一个带有domain_id域的记录。

的数据看起来有点像这样(与削减简洁一些列):

nid  gid realm  grant_view grant_update grant_delete 
73  0  domain_id 1   1    1 
73  0  domain_site 1   0    0 
988  0  domain_id 1   1    1 
988  0  domain_site 1   0    0 
90  0  domain_id 1   1    1 

不境界适合什么样的目的?这些记录如何填充,最重要的是,我该如何解决这个问题? SQL是否正确?

回答

1

答案显然是很多更现实的,比我在想:

使用的情况下享有“不同点”配置选项,这需要出受骗者。

1

我认为当你有一个Drupal站点的多站点访问打开和你使用域访问模块(http://drupal.org/project/domain)时,这些领域是适合的如果你不需要域访问模块卸载可能会解决这个问题。如果您确实需要它,您很可能需要使用节点访问权限添加过滤器到您的视图:访问和/或使用域视图模块。这应该让你朝着正确的方向前进。我从来没有使用过这些模块。我刚刚浏览了模块代码和项目页面。祝你好运!