Ergebnis 1 bis 5 von 5

Thema: Models, $arrOptions und Database

  1. #1
    Contao-Fan Avatar von dhe
    Registriert seit
    25.10.2010.
    Ort
    Esslingen a.N.
    Beiträge
    657

    Standard Models, $arrOptions und Database

    Hallo an alle,
    auch wenn ich schon lange mit Contao arbeite, aber jetzt bin ich mit meinem Latein am Ende und brauche eure Hilfe bzw. einen Tipp.

    Ich möchte meine News nach Archiv und News Categories (codefog/contao-news_categories) dynamisch filtern. Für die AJAX Thematik nutze ich richardhj/contao-ajax_reload_element, das klappt auch sehr gut.

    Allerdings scheitere ich einfach an der Kombination aus Archiven und Rubriken.

    Mit den news_categories wird schon eine 2. Tabelle (tl_news_categories) erzeugt, die ich anzapfen will, um meine News-Ids pro (ausgewählten) Kategorie(n) zu erhalten.
    das mache ich so:
    PHP-Code:
    $strCats implode(',',$arrCategories);
    $objNewsCategorized $objDataBase->prepare('SELECT * FROM tl_news_categories WHERE category_id IN ('.$strCats.')')->limit(0)->execute();

    if (
    $objNewsCategorized !== null) {
        
        
    $arrNewsIds = array();
        while(
    $objNewsCategorized->next()){
            
    $arrNewsIds[] = $objNewsCategorized->news_id;                    
        }    


    Und jetzt stecke ich fest: wie kann ich folgende Query mit dem NewsModel realisieren? ($arrNewsIds und $newsArchives sind eindimensionale arrays)
    PHP-Code:
    $objFilteredNews $objDataBase->prepare('SELECT * FROM tl_news WHERE id IN (' implode(','$arrNewsIds) . ') AND pid IN (' implode(','$newsArchives) . ') AND published = 1')->execute(); 
    2 Möglichkeiten habe ich ausgemacht, aber ich kapier einfach nicht, wie ich das $arrOptions richtig anlege.
    PHP-Code:
    \NewsModel::findMultipleByIds($arrNewsIds,$arrOptions);
    \
    NewsModel::findPublishedByPids($newsArchivesnull$this->perPage$offset,$arrOptions); 
    Ich möchte dann die Collection mit $this->parseArticles nutzen (falls jemand fragt )

    Kann mir jemand weiterhelfen?

    grüße und danke schon mal für jeden Tipp.

  2. #2
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Ich hoffe, ich hab jetzt genau genug gelesen (kleiner Bildschirm + wackeliger ÖPNV = sinngemässes ableiten.... ).

    Das $arrOptions hat mich auch ne ganze Zeit lang in den Wahnsinn getrieben, den Aufbau muss man sich ja weit herleiten...

    PHP-Code:
    $objRoot = \ExtendedSitemap::findPublishedRootPages(array('column' => array('createSitemap=?','sitemapName!=?'), 'value' => array('1',''))); 
    So ist das bei den "findByXY". Laut coding guidelines sollte man ohnehin immer "findBy" verwenden (ja so steht's in der Doku ).

    Bei "findBy" wandert das alles dann noch ein bisschen tiefer:
    PHP-Code:
    $objPages = \PageModel::findBy(array('pid=?'), array($pid), array(array('order'), array('sorting'))); 
    Ich hoffe, es hilft ein bisschen...

  3. #3
    Contao-Fan Avatar von dhe
    Registriert seit
    25.10.2010.
    Ort
    Esslingen a.N.
    Beiträge
    657

    Standard

    jaa! das hat geholfen. hat funktioniert. danke.

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.949

    Standard

    Ich finde zu diesem Thema https://docs.contao.org/books/cookbook/de/Models.html recht hilfreich.

    Das findByXY ist einfach nur ein Mapping für Schreibfaule: https://github.com/contao/core/blob/...php#L992-L1002
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Nutzer Avatar von miniA4kuser
    Registriert seit
    14.11.2013.
    Beiträge
    130

    Standard

    Auch schön erklärt finde ich Contao Models von Marco Simbürger
    Tippfehler unterliegen nicht dem Copyright und können frei weitergegeben werden.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •