Ich habs.
Direkt in der Datenbank (geht nicht über ext_tables.sql) den VIEW erzeugt:
select (`tx_xxx_domain_model_gebaeude`.`uid` + 100000) AS `uid`,`tx_xxx_domain_model_gebaeude`.`bezeichnung` AS `name`,'' AS `vorname`,'' AS `nachname`,concat(`tx_xxx_domain_model_gebaeude`.`telefon_landvorwahl`,' ',`tx_xxx_domain_model_gebaeude`.`telefon_ortsvorwahl`,' ',`tx_xxx_domain_model_gebaeude`.`telefon_durchwahl`) AS `telefon`,concat(`tx_xxx_domain_model_gebaeude`.`fax_landvorwahl`,' ',`tx_xxx_domain_model_gebaeude`.`fax_ortsvorwahl`,' ',`tx_xxx_domain_model_gebaeude`.`fax_durchwahl`) AS `fax`,'' AS `email`,'' AS `mobile`,'' AS `sprechzeiten_nach_vereinbarung`,'' AS `sprechzeiten_sonderzeiten`,`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_nach_vereinbarung` AS `oeffnungszeit_nach_vereinbarung`,`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_sonderzeiten` AS `oeffnungszeit_sonderzeiten`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mo_von_vormittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mo_bis_vormittags`) AS `oeffnungszeit_mo_vormittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mo_von_nachmittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mo_bis_nachmittags`) AS `oeffnungszeit_mo_nachmittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_di_von_vormittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_di_bis_vormittags`) AS `oeffnungszeit_di_vormittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_di_von_nachmittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_di_bis_nachmittags`) AS `oeffnungszeit_di_nachmittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mi_von_vormittags`,' -',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mi_bis_vormittags`) AS `oeffnungszeit_mi_vormittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mi_von_nachmittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_mi_bis_nachmittags`) AS `oeffnungszeit_mi_nachmittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_do_von_vormittags`,' _ ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_do_bis_vormittags`) AS `oeffnungszeit_do_vormittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_do_von_nachmittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_do_bis_nachmittags`) AS `oeffnungszeit_do_nachmittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_fr_von_vormittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_fr_bis_vormittags`) AS `oeffnungszeit_fr_vormittags`,concat(`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_fr_von_nachmittags`,' - ',`tx_xxx_domain_model_gebaeude`.`oeffnungszeit_fr_bis_nachmittags`) AS `oeffnungszeit_fr_nachmittags`,'gebaeude' AS `typ`,'' AS `gebaeude`,'' AS `behoerde` from `tx_xxx_domain_model_gebaeude` union all select `tx_xxx_domain_model_ansprechpartner`.`uid` AS `uid`,concat(`tx_xxx_domain_model_ansprechpartner`.`vorname`,' ',`tx_xxx_domain_model_ansprechpartner`.`nachname`) AS `name`,`tx_xxx_domain_model_ansprechpartner`.`vorname` AS `vorname`,`tx_xxx_domain_model_ansprechpartner`.`nachname` AS `nachname`,concat(`tx_xxx_domain_model_ansprechpartner`.`telefon_landvorwahl`,' ',`tx_xxx_domain_model_ansprechpartner`.`telefon_ortsvorwahl`,' ',`tx_xxx_domain_model_ansprechpartner`.`telefon_durchwahl`) AS `telefon`,concat(`tx_xxx_domain_model_ansprechpartner`.`fax_landvorwahl`,' ',`tx_xxx_domain_model_ansprechpartner`.`fax_ortsvorwahl`,' ',`tx_xxx_domain_model_ansprechpartner`.`fax_durchwahl`) AS `fax`,concat(`tx_xxx_domain_model_ansprechpartner`.`mobil_landvorwahl`,' ',`tx_xxx_domain_model_ansprechpartner`.`mobil_ortsvorwahl`,' ',`tx_xxx_domain_model_ansprechpartner`.`mobil_durchwahl`) AS `mobile`,`tx_xxx_domain_model_ansprechpartner`.`email` AS `email`,`tx_xxx_domain_model_ansprechpartner`.`sprechzeiten_nach_vereinbarung` AS `sprechzeiten_nach_vereinbarung`,`tx_xxx_domain_model_ansprechpartner`.`sprechzeiten_sonderzeiten` AS `sprechzeiten_sonderzeiten`,'' AS `oeffnungszeit_nach_vereinbarung`,'' AS `oeffnungszeit_sonderzeiten`,'' AS `oeffnungszeit_mo_vormittags`,'' AS `oeffnungszeit_mo_nachmittags`,'' AS `oeffnungszeit_di_vormittags`,'' AS `oeffnungszeit_di_nachmittags`,'' AS `oeffnungszeit_mi_vormittags`,'' AS `oeffnungszeit_mi_nachmittags`,'' AS `oeffnungszeit_do_vormittags`,'' AS `oeffnungszeit_do_nachmittags`,'' AS `oeffnungszeit_fr_vormittags`,'' AS `oeffnungszeit_fr_nachmittags`,'ansprechpartner' AS `typ`,`tx_xxx_domain_model_ansprechpartner`.`gebaeude_id` AS `gebaeude`,`tx_xxx_domain_model_ansprechpartner`.`ansprechpartner_behoerde` AS `behoerde` from `tx_xxx_domain_model_ansprechpartner`
Dann habe ich dazu ein Model angelegt:
<?php
namespace KKSoftware\XXX\Domain\Model;
class FeSearch extends BaseModel {
/**
* @var string
*/
protected $name;
/**
* @var string
*/
protected $vorname;
/**
* @var string
*/
protected $nachname;
/**
* @var string
*/
protected $telefon;
/**
* @var string
*/
protected $fax;
/**
* @var string
*/
protected $mobile;
/**
* @var int
*/
protected $sprechzeitenNachVereinbarung;
/**
* @var string
*/
protected $sprechzeitenSonderzeiten;
/**
* @var int
*/
protected $oeffnungszeitNachVereinbarung;
/**
* @var string
*/
protected $oeffnungszeitSonderzeiten;
/**
* @var string
*/
protected $email;
/**
* @var string
*/
protected $oeffnungszeitMoVormittags;
/**
* @var string
*/
protected $oeffnungszeitMoNachmittags;
/**
* @var string
*/
protected $oeffnungszeitDiVormittags;
/**
* @var string
*/
protected $oeffnungszeitDiNachmittags;
/**
* @var string
*/
protected $oeffnungszeitMiVormittags;
/**
* @var string
*/
protected $oeffnungszeitMiNachmittags;
/**
* @var string
*/
protected $oeffnungszeitDoVormittags;
/**
* @var string
*/
protected $oeffnungszeitDoNachmittags;
/**
* @var string
*/
protected $oeffnungszeitFrVormittags;
/**
* @var string
*/
protected $oeffnungszeitFrNachmittags;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\KKSoftware\XXX\Domain\Model\Gebaeude>
*/
protected $gebaeude;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\KKSoftware\XXX\Domain\Model\Behoerde>
*/
protected $behoerde;
/**
* @return string
*/
public function getName() {
return $this->name;
}
/**
* @return string
*/
public function getVorname() {
return $this->vorname;
}
/**
* @return string
*/
public function getNachname() {
return $this->nachname;
}
/**
* @return string
*/
public function getTelefon() {
return $this->telefon;
}
/**
* @return string
*/
public function getFax() {
return $this->fax;
}
/**
* @return string
*/
public function getMobile() {
return $this->mobile;
}
/**
* @return string
*/
public function getEmail() {
return $this->email;
}
/**
* @return int
*/
public function getSprechzeitenNachVereinbarung() {
return $this->sprechzeitenNachVereinbarung;
}
/**
* @return string
*/
public function getSprechzeitenSonderzeiten() {
return $this->sprechzeitenSonderzeiten;
}
/**
* @return int
*/
public function getOeffnungszeitNachVereinbarung() {
return $this->oeffnungszeitNachVereinbarung;
}
/**
* @return string
*/
public function getOeffnungszeitSonderzeiten() {
return $this->oeffnungszeitSonderzeiten;
}
/**
* @return string
*/
public function getOeffnungszeitMoVormittags() {
return $this->oeffnungszeitMoVormittags;
}
/**
* @return string
*/
public function getOeffnungszeitMoNachmittags() {
return $this->oeffnungszeitMoNachmittags;
}
/**
* @return string
*/
public function getOeffnungszeitDiVormittags() {
return $this->oeffnungszeitDiVormittags;
}
/**
* @return string
*/
public function getOeffnungszeitDiNachmittags() {
return $this->oeffnungszeitDiNachmittags;
}
/**
* @return string
*/
public function getOeffnungszeitMiVormittags() {
return $this->oeffnungszeitMiVormittags;
}
/**
* @return string
*/
public function getOeffnungszeitMiNachmittags() {
return $this->oeffnungszeitMiNachmittags;
}
/**
* @return string
*/
public function getOeffnungszeitDoVormittags() {
return $this->oeffnungszeitDoVormittags;
}
/**
* @return string
*/
public function getOeffnungszeitDoNachmittags() {
return $this->oeffnungszeitDoNachmittags;
}
/**
* @return string
*/
public function getOeffnungszeitFrVormittags() {
return $this->oeffnungszeitFrVormittags;
}
/**
* @return string
*/
public function getOeffnungszeitFrNachmittags() {
return $this->oeffnungszeitFrNachmittags;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\KKSoftware\XXX\Domain\Model\Gebaeude>
*/
public function getGebaeude() {
return $this->gebaeude;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\KKSoftware\XXX\Domain\Model\Behoerde>
*/
public function getBehoerde() {
return $this->behoerde;
}
}
Und ein (leeres) Repository.
Anschließend kann ich mit
$feSearchRepository = $this->objectManager->get('KKSoftware\\XXX\\Domain\\Repository\\FeSearchRepository');
$result = $feSearchRepository->findAll();
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($result);exit;
mein VIEW abfragen.