[Frage] übersetzte Datensätze werden deoppelt ausgegeben [Gelöst] TYPO3-Version: 6.1.1

  • daFalk daFalk
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    09. 01. 2014, 12:46

    Hallo,

    meine Seite ist zweisprachig. ich habe auf der Seite eine Extension in der Filme gespeichert werden. Die Im plugin sucht der Nutzer sich aus, welche Datensätze aus welchen Kategorien und welchen Jahren im Frontend angezeigt werden sollen. Nun habe ich einen Datensatz übersetzt. Es ist die Parent-UID in der Tabelle vorhanden und die Sprachen ID ebenfalls.
    bei der Ausgabe im Frontend wird auf der Deutschen Seite der deutsche Datensatz angezeigt, aber doppelt. und das selbe auf der englischen Seite. Der Datensatz wird zwar auf Englisch angezeigt, aber zwei mal. Alle nicht übersetzten Datensätze werden nur einmal angezeigt.

    Mein Repository sieht so aus:

    1. public function findAllFiltered($year, $category){
    2.  
    3. if(strpos($year,",")!==false){
    4. $years = explode(',', $year);
    5. } else {
    6. $years = array($year);
    7. };
    8.  
    9. if(strpos($category,",")!==false){
    10. $categories = explode(',', $category);
    11. } else {
    12. $categories = array($category);
    13. };
    14.  
    15. $sql = "SELECT * FROM tx_frmovieportfolio_domain_model_movie WHERE sys_language_uid = '" . $GLOBALS['TSFE']->sys_language_uid . "' AND ";
    16. $i=count($years);
    17. foreach ($years as $value) {
    18. $i=$i-1;
    19. $sql = $sql . "year = '" . $value . "' AND (";
    20. $j=count($categories);
    21. foreach ($categories as $cat) {
    22. $j = $j-1;
    23. $sql = $sql."category = '".$cat."'";
    24.  
    25. if($j > 0) {
    26. $sql=$sql.' OR ';
    27. };
    28. };
    29. $sql=$sql.')';
    30. if($i > 0){
    31. $sql=$sql.' OR ';
    32. };
    33. };
    34. print_r($sql);
    35. $query = $this->createQuery();
    36. //$query->getQuerySettings()->setReturnRawQueryResult(TRUE);
    37. $query->statement($sql);
    38.  
    39. return $query->execute();
    40. }

    Das entstehende SQL-Statement sieht dann beispielhaft so aus:

    1. SELECT * FROM tx_frmovieportfolio_domain_model_movie WHERE sys_language_uid = '0' AND year = '2013' AND (category = '0' OR category = '1') OR year = '2012' AND (category = '0' OR category = '1')

    Kann mir bitte jemand helfen diese doppelten Datensätze los zu werden?
    Schankedön.

    Falk

  • daFalk daFalk
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    09. 01. 2014, 13:38 - Lösung

    Hab es nun hinbekommen. man sollte wohl nicht auf selbst erstellen der statements zurückgreifen. Vor allem keine so schlechten geschriebenen. Mein funktionierendes Repository sieht nun so aus:

    1. if(strpos($year,",")!==false){
    2. $years = explode(',', $year);
    3. } else {
    4. $years = array($year);
    5. };
    6.  
    7. if(strpos($category,",")!==false){
    8. $categories = explode(',', $category);
    9. } else {
    10. $categories = array($category);
    11. };
    12.  
    13.  
    14. $query = $this->createQuery();
    15.  
    16. return $query->matching(
    17. $query->logicalAnd(
    18. $query->in('year', $years),
    19. $query->in('category', $categories)
    20. )
    21. )->execute();

    danke.
    Falk


  • 1
  • daFalk daFalk
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    09. 01. 2014, 13:38

    Hab es nun hinbekommen. man sollte wohl nicht auf selbst erstellen der statements zurückgreifen. Vor allem keine so schlechten geschriebenen. Mein funktionierendes Repository sieht nun so aus:

    1. if(strpos($year,",")!==false){
    2. $years = explode(',', $year);
    3. } else {
    4. $years = array($year);
    5. };
    6.  
    7. if(strpos($category,",")!==false){
    8. $categories = explode(',', $category);
    9. } else {
    10. $categories = array($category);
    11. };
    12.  
    13.  
    14. $query = $this->createQuery();
    15.  
    16. return $query->matching(
    17. $query->logicalAnd(
    18. $query->in('year', $years),
    19. $query->in('category', $categories)
    20. )
    21. )->execute();

    danke.
    Falk

  • 1