SQL-Query - wie mache ich das richtig in R5?
Verfasst: 27. Jan 2017, 19:36
Hallo,
ich benötige eine Artikelliste, in der auch jeweils ein Teil der Inhalte mit ausgegeben wird. Für die Abfrage der Daten habe ich bisher (also in Redaxo 4.x) immer folgende SQL-Syntax verwendet:
Wie "übersetze" ich das richtig für Redaxo 5? Ich hab meine Abfrage aktuell so angepasst:
Leider funktioniert das scheinbar nicht - für alle Felder die ich abfrage bekomme ich diese Fehlermeldung:
Ich hab hier mal den entsprechenden Auszug aus meinem Modul-Code:
Vielen Dank für Eure Hilfe!
Gruß, Michael
ich benötige eine Artikelliste, in der auch jeweils ein Teil der Inhalte mit ausgegeben wird. Für die Abfrage der Daten habe ich bisher (also in Redaxo 4.x) immer folgende SQL-Syntax verwendet:
Code: Alles auswählen
$res = $sql->getArray('SELECT * FROM '.$REX['TABLE_PREFIX'].'article_slice WHERE article_id IN (' . $sql_array . ') and modultyp_id=' . $modulid . ' ORDER BY value20 DESC');
Code: Alles auswählen
$res = $sql->getArray('SELECT * FROM ' . rex::getTablePrefix() . 'article_slice WHERE article_id IN (' . $sql_array . ') and module_id=' . $modul_id . ' ORDER BY value20 DESC LIMIT 3');
Kann mir hier vielleicht jemand auf die Sprünge helfen?Warning: Field "article_id" does not exist in result! in [...]/redaxo/src/core/lib/sql/sql.php on line 583
Warning: Field "value2" does not exist in result! in [...]/redaxo/src/core/lib/sql/sql.php on line 583
Warning: Field "value4" does not exist in result! in [...]/redaxo/src/core/lib/sql/sql.php on line 583
Ich hab hier mal den entsprechenden Auszug aus meinem Modul-Code:
Code: Alles auswählen
$news_cat_id = 'REX_LINK[1]';
$modul_id = 3;
$art_ids = array();
// Artikel der aktuellen Kategorie holen
$articles = rex_category::get($news_cat_id)->getArticles();
// Array aus Artikel-IDs
if (count($articles)) {
foreach ($articles as $article) {
if ($article->getValue('status') != 0) { // Artikel ist online
if ($article instanceof rex_article && !$article->isStartArticle()) {
$art_ids[] = $article->getValue('id');
}
}
}
}
print_r($art_ids); // Zur Überprüfung des Arrays -> gibt die richtigen Werte aus.
// Daten aus DB holen
$sql_array = implode(',',$art_ids);
$sql = rex_sql::factory();
$res = $sql->getArray('SELECT * FROM ' . rex::getTablePrefix() . 'article_slice WHERE article_id IN (' . $sql_array . ') and module_id=' . $modul_id . ' ORDER BY value20 DESC LIMIT 3');
if($sql->getRows()) {
while($sql->hasNext()) {
$t_id = $sql->getValue('article_id');
$t_head = $sql->getValue('value2');
$t_copy = $sql->getValue('value4');
[ ... ]
$sql->next(); // nächster Eintrag laden.
}
}
Gruß, Michael