Queries
- Paginierung auf alphabetisch basierende Datensätze
- Paginierung auf Datum basierende Datensätze
- Paginierung auf Prio basierende Datensätze
- Query inkl. einer "Bitte auswählen" Option
Blättern auf alphabetisch basierende Datensätze
Die Methoden basieren auf Yorm und gehören in eine Class wie zum Beispiel
class Project extends rex_yform_manager_dataset
{
}
vorherigen Datensatz holen
public function getPrevious()
{
$query = self::query()
->where('status', '1')
->where(sprogfield('title'), $this->getTitle(), '<')
->orderBy(sprogfield('title'), 'DESC');
return $query->findOne();
}
nächsten Datensatz holen
public function getNext()
{
$query = self::query()
->where('status', '1')
->where(sprogfield('title'), $this->getTitle(), '>')
->orderBy(sprogfield('title'), 'ASC');
return $query->findOne();
}
Blättern auf Datum basierende Datensätze zu erstellen (News)
Die Methoden basieren auf Yorm und gehören in eine Class wie zum Beispiel
class News extends rex_yform_manager_dataset
{
}
Die Queries lassen sich aber auch sehr einfach für eine normale DB-Abfrage adaptieren.
vorherigen Datensatz holen
public function getPrevious()
{
$query = self::query()
->where('status', '1')
->whereRaw('id != :id and (date > :date or date = :date and id > :id)',
['id' => $this->id, 'date' => $this->date])
->orderBy('date', 'ASC')
->orderBy('id', 'ASC');
return $query->findOne();
}
nächsten Datensatz holen
public function getNext()
{
$query = self::query()
->where('status', '1')
->whereRaw('id != :id and (date < :date or date = :date and id < :id)',
['id' => $this->id, 'date' => $this->date])
->orderBy('date', 'DESC')
->orderBy('id', 'DESC');
return $query->findOne();
}
Blättern auf Prio basierende Datensätze zu erstellen
Die Methoden basieren auf YOrm und gehören in eine Class wie zum Beispiel
class Item extends rex_yform_manager_dataset
{
}
Die Queries lassen sich aber auch sehr einfach für eine normale DB-Abfrage adaptieren.
vorherigen Datensatz holen
public function getPrevious()
{
$query = self::query()
->where('status', '1')
->whereRaw('prio < :prio', ['prio' => $this->prio])
->orderBy('prio', 'DESC');
return $query->findOne();
}
nächsten Datensatz holen
public function getNext()
{
$query = self::query()
->where('status', '1')
->whereRaw('prio > :prio', ['prio' => $this->prio])
->orderBy('prio', 'ASC');
return $query->findOne();
}
Query inkl. einer "Bitte auswählen" Option
Nützlich bei select
-Feldtypen im MetaInfo AddOn oder im YFormbuilder
SELECT name, filename AS id FROM rex_project_icon UNION SELECT ' Bitte wählen' AS name, "" AS id ORDER BY name
Beispielausgabe in der Sidebar eines Artikels
<select name="art_icon" size="1" class="form-control" id="rex-metainfo-art_icon">
<option value=""> Bitte wählen</option>
<option value="file_a">A</option>
<option value="file_b">B</option>
</select>
Hinweis:
select
via MetaInfo erstellt