Hallo zusammen,
momentan beschäftige ich mich mit einer ext die zwei Tabellen hat.
- Auto
- Preise
Ein Auto kann mehrere Preise haben (je nach ausstattung).
Im Template:
<f:for each="{objecte.price}" as="prices">
<tr>
<td>{prices.price}<f:translate key="currency" /></td>
</tr>
</f:for>
Bekomme ich so natürlich alle Preise in einer Tabelle ausgegeben, was auch nicht schlecht ist.
Nun möchte ich aber den kleinsten Preis und nur den. Hier hänge ich schon ziemlich lange...
Hilfe wäre super 😉
Grüße Thorsten
Meine Herangehensweise wäre eine getter-Methode im Model (Beispiel: getLowestPrice).
Die gibt den kleinsten Preis zurück.
Im Template würde man dann {car.lowestPrice} schreiben.
Hi und danke für die Rückmeldung.
Ich steh da leider aufm Schlauch, kann sein das ich mich auch zu dumm anstelle...
Leider versteh ich nicht wie ich das umsetzen soll.
Sry
Thorsten
Mach zwei Models: Einmal Auto und einmal Preis die wie folgt zueinander stehen:
Auto 1---->* Preis
Und dann kannst du, wie schon layne geschrieben hat, eine getter-Methode im Auto-Model erstellen, welche dir den kleinsten Wert zurück gibt mit:
{car.lowestPrice}
Ja so hab ich das angelegt.
Im Auto kann ich dann per select die preise einladen die zu dem Auto passen.
Nur wie ich an den kleinsten komme, das begreif ich nicht. Was bringt mir eine getter-Methode wenn ich ihr nicht sagen kann was sie zu holen hat?
Grüße
Thorsten
Naja, dein Model kennt alle Preise. Du kannst in der getter-Methode also über alle Preise iterieren.
Du speicherst dir jeweils den aktuellen Preis, wenn dieser kleiner ist als dein bisheriger Preis. (Speichern in einer "lokalen" Variablen innerhalb der Methode.
Du vergleichst also immer den aktuellen Preis mit deinem bisher kleinsten Preis.
Den kleinsten Wert kannst du dir dann zurückgeben lasen.
In Extbase sollte die eigentliche Logik größtenteils im Model erfolgen.
Nicht iterieren sonder mit einer SQL-Abfrage in der Repository lösen.
Freunde, danke für die Denkanstöße.
ich habs wie folgt gelöst:
Model:
public function getLowestPrice() {
$lowestPrice = t3lib_div::makeInstance('Tx_QdRentable_Domain_Repository_PricesRepository');
return $lowestPrice->findLowest($this);
}
PriceRepos:
public function findLowest(){
$query = $this->createQuery();
$result = $query->setOrderings (array('price' => Tx_Extbase_Persistence_Query::ORDER_DESCENDING))->execute();
return $result->getFirst();
}