Nette\Database a posledna sanca

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

Caute potrebujem vytiahnut z tabulky record vytiahnut zaznam, ktory obsahuje dva prepojenia do jednej tabulky

record(id,idForwardIn,idForwardOut)
forward(id, name)

ide to vobec?

Mysteria
Člen | 797
+
0
-

Nevidím důvod, proč by to nemělo jít. Je to podobné jako v dokumentaci, příklad s autorem a překladatelem knihy.

Za předpokladu, že máš definované cizí klíče to bude něco jako:

$record = $this->database->table('record')->get(1);
echo $record->ref('forward', 'idForwardIn')->name;
echo $record->ref('forward', 'idForwardOut')->name;
cujan
Člen | 410
+
0
-

Oki vdaka, lebo sa to snazim nejako podobne pouzit v ublaboo grid a nejako to nefunguje…

cujan
Člen | 410
+
0
-

Mysteria napsal(a):

Nevidím důvod, proč by to nemělo jít. Je to podobné jako v dokumentaci, příklad s autorem a překladatelem knihy.

Za předpokladu, že máš definované cizí klíče to bude něco jako:

$record = $this->database->table('record')->get(1);
echo $record->ref('forward', 'idForwardIn')->name;
echo $record->ref('forward', 'idForwardOut')->name;

nechapem jednu vec

vytiahnem si data z db
v presentery

$this->template->records = $this->recordManager->getRecords();

model

public function getRecords()
   {
	return $this->database->table(self::TABLE_NAME);
   }

a potom ak v late si vypisem data bez prepojenia(cize len hodnotu id) tak ich vypise oki

{$record->idForwarderIn}
{$record->idForwarderOut}

ale akonahle ich prepojim cudzim klucom, tak vypise do oboch stlpcov iba hodnoty akoby prveho

{$record->forwarder->name}
{$record->forwarder->name}
Mysteria
Člen | 797
+
0
-

Tak to dává smysl, ne? Nette nemá křišťálovou kouli, aby vědělo, že když napíšeš 2× to samé {$record->forwarder->name}, že jednou to chceš přes idForwarderIn a jednou přes idForwarderOut. Proto jsem použil plnou variantu s ->ref(), kde to lze uvést.

Případně možná by mohlo fungovat i {$record->forwarderIn->name} a {$record->forwarderOut->name}, ale tím si nejsem jist, můžeš vyzkoušet.

cujan
Člen | 410
+
0
-

Mysteria napsal(a):

Tak to dává smysl, ne? Nette nemá křišťálovou kouli, aby vědělo, že když napíšeš 2× to samé {$record->forwarder->name}, že jednou to chceš přes idForwarderIn a jednou přes idForwarderOut. Proto jsem použil plnou variantu s ->ref(), kde to lze uvést.

Případně možná by mohlo fungovat i {$record->forwarderIn->name} a {$record->forwarderOut->name}, ale tím si nejsem jist, můžeš vyzkoušet.

oki funguje vdaka…
a este jedna otazka viem uozit do stlpca, ktory je prepojeny cudzim klucom na nejaku tabulku aj prazdnu hodnotu? Lebo napr. niektore zaznamy nemaju ForwarderOut…

Mysteria
Člen | 797
+
0
-

Zkus {$record->idForwarderOut ? $record->forwarderOut->name : 'Žádný záznam'}.