Elgg:是否可以通过单独的变量order_by

时间:2017-11-07 13:59:59

标签: php variables math web elgg

所以,我一直在寻找并与Elgg 1.8合作已有一段时间了,虽然我已经掌握了它,但我仍然是一个完整的新手。

我有这个想法对我的桌子进行排序,从elgg本身,特别是群体等中获取某些信息。我希望通过其标签(名称,总数,差异,日期)对所有内容进行排序,并且对于名称和日期,elgg对此非常直接。但是,由于这一点,我不太确定我是否可以对总数和差异做同样的事情。请注意以下代码。

                $GroupArray = elgg_get_entities(array(
                    'type' => 'group',
                //try to get this to use the order of the totalmembers
                    'order_by' => $Order . " " . $Sort,
                    'joins' => 'JOIN ' . $db_prefix . 'groups_entity ge',
                    'limit' => 10,
                    'pagination' => true,
                    'offset' => $Offset,
                ));

这个$ GroupArray捕获所有组统计数据,这些统计数据允许我将所有必要的信息添加到表中,并通过单击表格中的选项卡动态添加$ Order和$ Sort变量。名称和日期已在elgg中使用ge.name和e.time_created初始化,但我需要做一些诡计以使成员和总工作方式相同。

                    $TotalMembers = elgg_get_entities_from_relationship(array(
                        'relationship' => 'member',
                        'relationship_guid' => $Reports->guid,
                        'inverse_relationship' => true,
                        'type' => 'user',
                        'limit' => 20,
                        'joins' => array("JOIN {$db_prefix}users_entity u ON e.guid=u.guid"),
                        'order_by' => 'u.name ASC',
                        'count' => true,
                        'relationship_created_time_lower'
                    ));

这就是我获取每个列和组的成员总数的方法,它位于组数组之后,因为它允许它被抓取。我现在的问题是尝试将$ TotalMembers'order_by'放入$ Order变量中,基本上按每组的最小到最大成员排序。

我的搜索范围广泛无济于事,我不确定我的想法是否合情合理,或者它是否能像我认为的那样有效。

有人能够推动我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:0)

嗯,事实证明这是可能的,你只需要拆开Elgg的代码并将其替换为为你创建的Sql

$allQuery =
                        "SELECT DISTINCT e.guid, ge.name, 

                                                       (SELECT count(DISTINCT e.guid)
                                                   FROM elgg_entities e
                                                   JOIN elgg_users_entity u
                                                   ON e.guid=u.guid
                                                   JOIN elgg_entity_relationships r
                                                   on r.guid_one = e.guid
                                                   WHERE (r.relationship = 'member'
                                                     AND r.time_created >=1507476424
                                                     AND r.guid_two = ge.guid)
                                                     AND ((e.type = 'user'))
                                                     AND (e.site_guid IN (1))
                                                     AND ( (1 = 1) and e.enabled='yes')) as totalMembers


                                                   FROM elgg_entities e JOIN elgg_groups_entity ge
                                                   ON e.guid=ge.guid
                                                   WHERE ((e.type = 'group'))
                                                     AND (e.site_guid IN (1))
                                                     AND ( (1 = 1) and e.enabled='yes')
                                                   ORDER BY totalMembers $Sort
                                                   LIMIT $Offset, 10";

                    $allData = get_data($allQuery);

这只需要两个不同的elgg语句,这些语句实际上是sql语句并将它们连接在一起,以便现在可以通过max avaliable搜索总成员查询。