terminal42 / contao-DC_Multilingual

A multilingual DC driver storing the translations in the same table for Contao Open Source CMS
17 stars 8 forks source link

"Unknown column in 'where clause'" #40

Closed feam-codes closed 7 years ago

feam-codes commented 7 years ago

Hi!

Ich bin ein wenig irritert und mir nicht sicher, ob es ein Bug ist oder ich was falsch gemacht hab. Ich hab ein einfaches Plugin gebastelt, über das man Datensätze im Backend anlegen kann, die dann über ein Modul im Frontend ausgegeben werden. Entsprechend eurer Anleitung hab ich also im Model folgende Funktion:

protected static $strTable = 'tl_my_module';

public static function findAllPublished(array $arrOptions=array())
{
    $t = static::$strTable;
    $arrColumns = array("$t.published='1'");
    return static::findBy($arrColumns, null, $arrOptions);
}

Im Modul greif ich dann also wie folgt darauf zu:

$obj = \MyModuleModel::findAllPublished();

Der Aufruf im Frontend generiert dann allerdings einen Error. Aus dem Log ist dann ersichtlich, dass er im SQL Statement anscheinend 't1' anstelle von 'tl_my_module' erwartet.

SELECT t1.id, t1.tstamp, t1.langPid, t1.language, t1.title, t1.published, IFNULL(t2.title, t1.title) AS title FROM tl_my_module t1 LEFT OUTER JOIN tl_my_module t2 ON t1.id=t2.langPid AND t2.language='' WHERE (t1.langPid=0) AND (tl_my_module.published='1')

Wenn ich im Model dann nämlich statt dem Tabellennamen "t1" einsetze, funktioniert es:

protected static $strTable = 'tl_my_module';

public static function findAllPublished(array $arrOptions=array())
{
    // $t = static::$strTable;
    $arrColumns = array("t1.published='1'"); // $t replaced with t1
    return static::findBy($arrColumns, null, $arrOptions);
}

Bin für Vorschläge offen. :)

Danke.

aschempp commented 7 years ago

Die Verwendung von t1 als Alias ist wohl ein "überbleibsel" aus Isotope (dort haben wir die Funktion erfunden und es hiess p1 für Produkte). Leider können wir dass nicht ohne Break ändern, sonst würden ja alle bestehenden Abfragen nicht mehr gehen. Aber t1 bei dir zu verwenden funktioniert ja und sollte das "Problem" lösen? 🙈

feam-codes commented 7 years ago

Ja, an sich tut es das erstmal. Ich dachte nur, dass ein Report sinnvoll wäre. Vielleicht passt ihr das auch in der Dokumentation an?! :)

Danke.

aschempp commented 7 years ago

Das wäre sicherlich sinnvoll. Kannst du vielleicht einen Pull Request mit den benötigten Änderungen machen?

aschempp commented 7 years ago

see #41