Hallo,
kann es sein dass das Mappen der Tabellen nicht richtig funktioniert?
Mir ist folendes Aufgefallen wenn ich per TypoScript einmal folgndes lösche
config.tx_extbase.persistence.classes >
Kommt folgender Fehler:
mydb.tx_extbase_domain_model_frontenduser' doesn't exist: SELECT tx_extbase_domain_model_frontenduser.* FROM tx_extbase_domain_model_frontenduser
Was ja im Grunde logisch ist da das Mapping auf die fe_users Tabelle gelöscht wurde.
Da die fe_users Tabelle mit neuen Feldern erweitert wurde wollte ich jetzt statt über extbase auf meine eigene Extension Mappen also habe ich folgendes angegeben.
plugin.tx_testext {
persistence {
storagePid = 10
enableAutomaticCacheClearing = 1
updateReferenceIndex = 0
classes {
Tx_Testext_Domain_Model_FeUser {
mapping {
tableName = fe_users
recordType = Tx_Testext_Domain_Model_FeUser
columns {
lockToDomain.mapOnProperty = lockToDomain
}
}
}
}
}
}
Im Model habe ich folgendes gesagt:
class Tx_Testext_Domain_Model_FeUser extends Tx_Extbase_DomainObject_AbstractEntity {
/**
* @var string
*/
protected $username;
public function __construct() {
}
/**
* Sets the username value
*
* @param string $username
* @return void
* @api
*/
public function setUsername($username) {
$this->username = $username;
}
/**
* Returns the username value
*
* @return string
* @api
*/
public function getUsername() {
return $this->username;
}
}
mehr nicht es soll nur der username ausgegeben werden.
Wenn ich alles richtig verstanden habe dient das Model zum holen und setzen der Informationen und mt dem Mappen sage ich das er nicht auf die Tabelle zugreifen soll die wie die Klasse geschrieben wird sondern auf die fe_users. Somit sollte doch das Repo wissen das ich die fe_users nutzen möchte.
Aber nein ich erhalte mit findAll ein leeres Ergebnis, erst wenn ich die findAll() überschreibe.
public function findAll() {
$extbaseFrameworkConfiguration = Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration();
$pidList = implode(', ', t3lib_div::intExplode(',', $extbaseFrameworkConfiguration['persistence']['storagePid']));
$query = $this->createQuery();
$query->statement('SELECT * from fe_users where 1 AND pid IN ('.$pidList.')');
return $query->execute();
}
Aber das kann doch nicht der Weisheit letzter Schluß sein, dass ich mein eigenes Repo schreiben muss zumal ich mich dann frage wozu mappe ich wenn er doch nicht auf die Tabelle zugreift?
Hat jemand von euch eine Idee was ich falsch mache?
Gruß typonewbe