2017-11-07 5 views
0

Also, ich habe mich schon eine ganze Weile umgesehen und mit Elgg 1.8 gearbeitet, und während ich den Dreh rausbekomme, bin ich immer noch komplett Anfänger.Elgg: Ist es möglich, ein Array nach einer separaten Variablen zu sortieren order_by

Ich hatte diese Idee, meine Tabelle zu sortieren, die bestimmte Informationen von Elgg selbst ergreift, speziell die Gruppen und so. Ich möchte alles nach seinen Tabs sortieren (Name, Summe, Differenz, Datum) und für Name und Datum war das ziemlich einfach. Ich bin mir jedoch nicht ganz sicher, ob ich das Gleiche mit der Summe und dem Unterschied machen kann. Beachten Sie den folgenden Code.

   $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, 
       )); 

Diese $ GroupArray fängt alle Gruppenstatistiken, die mir alle notwendigen Informationen in die Tabelle hinzufügen können, und die $ Bestellung und Variablen $ sortieren werden durch Klicken auf die Registerkarten in der Tabelle dynamisch hinzugefügt. Name und Datum sind bereits in elgg mit ge.name und e.time_created initialisiert, aber ich muss ein paar Tricks machen, um die Mitglieder und die Summe auf die gleiche Weise arbeiten zu lassen.

    $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' 
        )); 

Dies ist, wie ich die Gesamtmenge der Mitglieder für jede Spalte und Gruppe erhalten, kommt es nach der Gruppen Array als das ist, was es gepackt werden kann. Mein Problem ist jetzt zu versuchen, die $ TotalMembers 'order_by' in die Variable $ Order zu setzen, im Wesentlichen nach den Min- bis Max-Mitgliedern für jede Gruppe zu sortieren.

Ich habe weit und breit vergebens gesucht, und ich bin mir nicht sicher, ob meine Idee plausibel ist oder ob sie überhaupt so funktioniert, wie ich denke.

Kann mir jemand einen Schub in die richtige Richtung geben?

Antwort

0

Nun, es stellt sich heraus, es möglich ist, müssen Sie nur Elgg Code auseinander nehmen und ersetzen Sie es mit dem Sql sonst schaffen für Sie

$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); 

Dies ist nur die beiden unterschiedlichen elgg Aussagen nimmt die wirklich sind sql-Anweisungen und verbindet sie zusammen, so dass es jetzt möglich ist, nach dem Maximum zu suchen, das für die Gesamtmitgliederabfrage verfügbar ist.

Verwandte Themen