Empfehlungen: Erweiterte Suche

hasAndBelongsToMany und Sortierung

Datenbankobjekte strukturieren und validieren

hasAndBelongsToMany und Sortierung

Beitragvon lonestar » Fr 28. Jan 2011, 22:33

Hi

Habe bisher mit Codeigniter gearbeitet und bin nach langen Suchen nach einem Zweit-Framework bei Cake gelandet.
Hab mir auch gleich mal ein Projekt geschnappt, um es mit Cake umzusetzen. (In der Praxis lernt es sich ja bekanntlich am besten :)) Seit dem sind 2 Tage vergangen.

Bei Codeigniter habe ich meistens mit normalen Querys bzw. mit Active Records gearbeitet, deswegen tue ich mich momentan bei Cake etwas schwer. Normale Abfragen funktionieren einwandfrei und zum Teil wesentlich einfacher als bei Codeigniter.

Jetzt zu meinem Problem:

Ich habe 2 Tabellen. Eine Tabelle für Seiten (Pages) und eine für "Module" (Modules) Die Module sind eigentlich nichts anderes als Elements die ins View geladen werden. Aber halt dynamisch, da übers Backend auswählbar und Sortierbar.

Zusätzlich zu den beiden Tabellen habe ich noch die Join-Tabelle: modules_pages mit module_id und page_id. Models sind korrekt angelegt.

Code: Alles auswählen
pr($this->Module->Page->findById(1));

Zeigt mir auch korrekt alle Module der Seite mit der page_id 1 an.

Die Join-Tabelle hat zusätzlich noch eine Spalte "order" für die Sortierung. Nur habe ich es nicht hinbekommen, die Ausgabe sortieren zu lassen.

Hier erstmal die normale Ausgabe (Nicht wundern, steht ein Haufen Quatsch drin)

Code: Alles auswählen
Array
(
    [Page] => Array
        (
            [id] => 1
            [title] => Startseite
            [seo_url] => home
            [meta_title] => Startseite
            [meta_desc] => Tolle Seite
            [meta_keys] => Super, Duper
            [view] => empty
            [template] => home
        )

    [Module] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [name] => Willkommen-Text
                    [type] => view
                    [view] => test
                    [created] =>
                    [modified] =>
                    [ModulesPage] => Array
                        (
                            [page_id] => 1
                            [module_id] => 1
                            [order] => 1
                        )

                )

            [1] => Array
                (
                    [id] => 6
                    [name] => Letzte Projekte
                    [type] => modul
                    [view] => last-projects
                    [created] =>
                    [modified] =>
                    [ModulesPage] => Array
                        (
                            [page_id] => 1
                            [module_id] => 6
                            [order] => 2
                        )

                )

        )

)
 


Unter ModulesPage gibts das Feld "order" nach dem ich gerne aufsteigend sortieren möchte.

Hatte mir das eigentlich so gedacht:

Code: Alles auswählen

$conditions = array('id' => 1);
$order = 'modules_pages.order ASC';
$modules = $this->Module->Page->find('all', array('conditions' => $conditions, 'order' => $order));
pr($modules);
 


Hier gibts nur einen SQL-Error

Habs erstmal über die Array-Sortierung gemacht.

Code: Alles auswählen

$result = Set::sort($modules['Module'], '{n}.ModulesPage.order', 'asc');
 


Eventuell weiß ja jemand, wie ich das direkt bei der DB-Abfrage hinbekomme.

Danke schonmal im Voraus

Gruß

lonestar
lonestar
 
Beiträge: 3
Registriert: Di 25. Jan 2011, 08:47
CakePHP-Version: 1.3.7
OS: OSX

Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast