Funkcia nad jednim riadkom tabuľky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tino415
Člen | 46
+
0
-

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
+
0
-

Napadají tři možnosti:

  1. 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.
  2. Použít nějaký custom SQL dotaz – SELECT name AS sloupecek
  3. 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
+
0
-
  1. 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.
  2. To by som potreboval niečo SELECT IF alias NULL THEN name ELSE alias.
  3. 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
+
0
-

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
+
0
-

k té 2. co IFNULL ? https://dev.mysql.com/…nctions.html#…
SELECT (IFNULL(alias, name)) AS name

tino415
Člen | 46
+
0
-

Díky, nechal som to nakoniec na fronte, a keď bude čas omrknem orm :), ta obalka znie dobre, len to by som musel nejak riešiť to že raz sa mi vracia jeden záznam, raz skupina…, to sa mi už nechcelo :D

Editoval tino415 (31. 8. 2015 13:12)