2

ちょっと、SQL ステートメントに問題があります。これはデータベース スキームです:( http://docs.elgg.org/wiki/DatabaseSchema )。「エンティティ」と「関係」テーブルのみが重要です。私がやろうとしているのは、オブジェクトのタイプが「グループ」であるすべての GUID を選択することですが、このオブジェクトは他のグループの子ではありません。つまり、guid_two 列に guid を持つレコードが関係テーブルにないことを意味します。私の最初のアイデアはこれでした:

SELECT * FROM elgg_entities e 
JOIN elgg_entity_relationships r ON e.guid = r.guid_one
WHERE e.type='group' AND NOT EXISTS (
    SELECT * 
    FROM elgg_entity_relationships s 
    WHERE e.guid = s.guid_two 
          AND s.relationship='subgroup')

しかし、それはうまくいきません。また、テーブルにはメンバーなどの他の関係もあります。私は今本当にイライラしているので、誰かが私を助けてくれることを願っています.

編集: この SQL クエリは MyPHP で機能します。elgg では、「elgg-ich」に変換しようとしました:

$options = array(
    'type' => 'group',
    'joins' => array("JOIN elgg_entity_relationships r ON e.guid = r.guid_one"),
    'wheres' => array("e.type='group' AND not exists (SELECT e.guid
    FROM elgg_entity_relationships s
    where e.guid = s.guid_two
    AND s.relationship = 'subgroup' 
 )"),
 'limit' => $limit,
 'full_view' => FALSE,
 );
$content = elgg_list_entities($options);

=>解決策は、大文字と小文字の区別と、6行目のwheresの代わりのwhereでした。

4

1 に答える 1

0

編集された質問で述べたように;

解決策は、大文字と小文字の区別と、6 行目の wheres の代わりに where でした。

于 2012-06-22T14:09:07.223 に答える