Table does not have a primary key
- omachala
- Člen | 20
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();
?>
- vvoody
- Člen | 910
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)
- vvoody
- Člen | 910
- 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
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
vvoody napsal(a):
- 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#…
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 :-(