ちょっと、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でした。