Funkcia nad jednim riadkom tabuľky
- tino415
- Člen | 46
Mám tabuľku ktorá ma stĺpce alias a name, a chcel by som vrátiť alias ak je definovaný, inak name. Aby to bolo bolo v celej aplikácií tak si myslím že najlepšie by to bolo implementovať v triede ktorá drží záznamy jedného riadku (ActiveRow). Ale neviem ani kde začať, je to možnosť tú triedu rozšíriť, vymeniť za vlastnú a pridať si tam takú funkciu, alebo ako bežne riešite takéto prípady ?
- Pavel Kravčík
- Člen | 1196
Napadají tři možnosti:
- Změnit jméno sloupce v tabulce. Protože pokud to chceš v celé aplikaci, tak není důvod aby se to jmenovalo 2× jinak.
- Použít nějaký custom SQL dotaz –
SELECT name AS sloupecek
- Jak si naznačil použít obálku na data. Nebo třeba nějaké ORM.
K poslední tvé otázce, jak to řeším já:
//YetORM
/**
* @property-read int $id
* @property string $jmeno
* @property string $prijmeni
*/
class UserEntity extends BaseEntity
{
public function fetchFullname()
{
return $this->record->jmeno . ' ' . $this->record->prijmeni;
}
}
P.S. stĺpce
je opravdu epické slovo a musel jsem googlit,
protože už jsem to tu viděl vícekrát a nevěřil jsem, že je to opravdu
správně. :)
Editoval Pavel Kravčík (28. 8. 2015 12:46)
- tino415
- Člen | 46
- ide o to že potrebujem obidva, originálny sa používa na párovanie a druhý slúži na to aby si používateľ vedel meniť meno.
- To by som potreboval niečo SELECT IF alias NULL THEN name ELSE alias.
- Dorábam to do väčšej aplikácie a nie je možne tam pridať orm…, musím si vystačiť s tým čo je v sandboxe :/
Ale díki za odpoveď, a nz za jazykové okienko :D
(zatiaľ som to ošetril v template, ale to ale nebudem v noci dobré spávať :D)
- Pavel Kravčík
- Člen | 1196
Tak bych možná zkusil tu obálku ve funkci, která vrací activeRow. A možná přes nějaký offsetSet() bych doplnil požadový duplikát. https://api.nette.org/…tiveRow.html
CustomRow extend ActiveRow
- Ondřej Kubíček
- Člen | 494
k té 2. co IFNULL ? https://dev.mysql.com/…nctions.html#…
SELECT (IFNULL(alias, name)) AS name