Hallo!
So langsam verstehe ich einige Dinge an dem extbase-Konstrukt. Aber einiges erschließt sich mir immer noch nicht.
Derzeit versuche ich alle Werte einer über mm-Tabelle referenzierten Tabelle aus zu lesen.
Daber verwende ich ein statement, da sonst wohl interne Mechanismen nicht greifen (ich hatte sowas mal gelesen).
Hier mal mein Repository:
namespace pluginname\pluginname\Domain\Repository;
class HausRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
public function findeLaender() {
$query = 'SELECT * FROM tx_pluginname_domain_model_land WHERE deleted = 0 AND hidden = 0';
$q = $this->createQuery();
$q->statement($query);
$antwort = $q->execute();
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($q);
return $antwort;
}
}
Das Ergebnis dieser Anfrage geht aber mit nichten an die entsprechende Datenbank (hier mal der Debug des Querys)
Extbase Variable Dump
TYPO3\CMS\Extbase\Persistence\Generic\Queryprototypeobject
type => 'pluginname\pluginname\Domain\Model\Haus' (47 chars)
objectManager => TYPO3\CMS\Extbase\Object\ObjectManagersingletonobjectfiltered
dataMapper => TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMappersingletonobjectfiltered
persistenceManager => TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManagersingletonobjectfiltered
qomFactory => TYPO3\CMS\Extbase\Persistence\Generic\Qom\QueryObjectModelFactorysingletonobjectfiltered
source => NULL
constraint => NULL
statement => TYPO3\CMS\Extbase\Persistence\Generic\Qom\Statementprototypeobject
statement => 'SELECT * FROM tx_pluginname_domain_model_land WHERE deleted = 0 AND hidden
= 0' (79 chars)
boundVariables => array(empty)
orderings => array(empty)
limit => NULL
offset => NULL
querySettings => TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettingsprototypeobject
Das Array sieht folgendermaßen aus:
TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (3 items)
0 => pluginname\pluginname\Domain\Model\Hausprototypepersistent entity (uid=1, pid=21)
uid => 1 (integer)
name => 'Schweden' (8 chars)
description => '' (0 chars)
sterne => 0 (double)
abpreis => 0 (double)
kategorie => 0 (integer)
wohnflaeche => 0 (integer)
belegung => '' (0 chars)
gewaesser => NULL
region => NULL
arten => NULL
_localizedUid => 1 (integer)modified
_languageUid => 0 (integer)modified
_versionedUid => 1 (integer)modified
pid => 21 (integer)
1 => pluginname\pluginname\Domain\Model\Hausprototypepersistent entity (uid=2, pid=21)
2 => pluginname\pluginname\Domain\Model\Hausprototypepersistent entity (uid=6, pid=21)
Die Daten sind da, aber im falschen Model. Dies ist das Model des Hauses und nicht des Landes.
Was mache ich hier falsch? Wie benutze ich bei meiner Anfrage das korrekte Model?
Übrigens ist die Beziehung derzeit folgendermaßen:
Haus <=> mm_Haus_Region <=> Region <=> mm_Region_Land <=> Land
Zusätzlich führe ich noch 2 weitere ähnliche Anfragen an die Tabelle "Arten" und "gewaesser" aus.
(hier Haus <=> mm_Haus_Wasser <=> Wasser und Haus <=> mm_Haus_Arten <=> Arten)
Das Ergebnis ist ähnlich falsch, jedoch werden die ersten Datensätze der vorgehenden Anfragen nicht überschrieben.
So sieht das Array für gewaesser folgendermaßen aus:
- Schweden
- Norwegen
- See
- Fluß
Vielleicht hat ja jemand einen Holzhammer und trichtert mir das System ein?
Vielen Dank
Jens