2

Drupal で作成したビューでノードが重複しています。この問題は、node_access テーブルのビューで結合が行われる方法に関連しているようです。

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 レコードが複数あり、1 つのレコードが domain_site のレルムで、1 つのレコードが domain_id のレルムであるため、node_access テーブルへの結合により、他のレコードが複製されます。

データの並べ替えは次のようになります (簡潔にするために一部の列を省略しています)。

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は正しいですか?

4

2 に答える 2

1

マルチサイト アクセスがオンになっている drupal サイトがあり、ドメイン アクセス モジュール ( http://drupal.org/project/domain )を使用している場合、レルムは適合すると思います。これをいくつか解決します。必要な場合は、ほとんどの場合、フィルターをビューに追加して、ノード アクセス: アクセスおよび/またはドメイン ビュー モジュールを使用する必要があります。そうすれば、あなたは正しい方向に向かうはずです。私はこれらのモジュールを自分で扱ったことはありません。モジュールのコードとプロジェクトのページに目を通しました。幸運を!

于 2010-01-12T19:41:22.723 に答える
1

答えは、私が思っていたよりもはるかにありふれたものだったようです。

ビューの下で「個別ノード」構成オプションを使用すると、重複が発生します。

于 2010-01-14T14:33:14.300 に答える