Table does not have a primary key

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

Ahoj, používám nette 2.1

při selectu pohledu (view) vrací Nette chybu „Table ‚pohled‘ does not have a primary key“. Což je zvláštní, protože view primární klíč obsahovat ani nemůže (nebo se pletu?). Je to bug v Nette nebo něco dělám špatně?

<?php
  $this->database->table('pohled')->fetch()->toArray();
?>
Jan Tvrdík
Nette guru | 2595
+
0
-

IMHO NDBT nepodporuje pohledy u MySQL.

vvoody
Člen | 910
+
0
-

omachala: Ten PK vyžaduje asi kvôli cachovaniu. Budeš musieť zmeniť reflection na Conventional alebo napísať si vlastnú ak máš atypické pomenovania PK/FK/tabuliek.

Jan Tvrdlík: Dalo by sa povedať že ich nepodporuje len DiscoveredReflecion, stretol som sa s potrebou joinovať k jednej tabuľke dva pohľady, na čo mi stačilo nastaviť ConventionlReflecion a rozumne pomenovať stĺpce pohľadu.

Editoval vvoody (28. 1. 2014 15:09)

omachala
Člen | 20
+
0
-

vvoody napsal(a):

Budeš musieť zmeniť reflection na Conventional

Můžeš mi to prosím více přiblížit?

Editoval omachala (28. 1. 2014 15:00)

vvoody
Člen | 910
+
0
-
  • Ak vytváraš pripojenie do databáze cez NetteExtension (zápis v configu v sekcii nette) tak je tam na to parameter reflection https://doc.nette.org/cs/configuring#…
  • Ak si vytváraš pripojenie do databáze sám, inštanciu reflexie predávaš ako druhý parameter konštruktoru triedy Nette\Database\Context
hrach
Člen | 1844
+
0
-

IMHO NDBT nepodporuje pohledy u MySQL.

A ani u jinych databazi. Principialne je problemm, ze bychom museli parsovat definici pohledu a zjistit, kam sloupce v tomto pohledu vedou ve zdrojovych tabulkach.

Resenim je spravne uvadene podedeni reflection a prepsani metod, aby pro dany pohled vraceli stejna data jako pro tabulky, ze ktere je odvozen.

omachala
Člen | 20
+
0
-

vvoody napsal(a):

Díky, ale tou změnou to celé nějak padá – stránka se do nekonečna načítá, ukončím to jen resetem Apache :-(