nette/database primarni klic na dvou sloupcich .. error
- zdrhal
- Člen | 42
Zdravíčko,
mám presenter:
public function roundFormSucceeded($button)
{
$values = $button->getForm()->getValues();
$id = (int) $this->getParameter('id');
if ($id) {
$this->database->findById('eventrounds',$id)->update($values);
$this->flashMessage('Kolo bylo upraveno.');
} else {
$this->database->insert('eventrounds',$values);
$this->flashMessage('Kolo bylo přidáno.');
}
$this->redirect('detail');
}
Toto funguje pro tabulku, která má primární klíč jeden sloupeček. Jak bych to měl upravit když můj primární klíč tvoří 2 sloupce? Např id_event a round?
- japlavaren
- Člen | 404
ak potrebujes 2 primary kluce v tabulke, nieco je zle… nestaci ti ten druhy uniq?
- zdrhal
- Člen | 42
Ok mam tabulku Zavody (id, datum) pak mam Kola (id_zavodu, kolo, zajety_cas, max_rychlost).
Pak kazdy zavod ma svoje id to je lehke.
Jeho jednotliva Kola maji primarni klic id_zavodu a kolo.
Zavod:
id – datum
1 – 12.03.14
2 – 13.03.14
Kola:
id_zavodu – kolo – cas – max
1 – 1 – 12:55 – 155
1 – 2 – 13:05 – 133
2 – 1 – 12:30 – 206
2 – 2 – 14:01 – 100
Chapes me trosicku? Jako mozne reseni me napada dat tabulce kola id (s autoincrementem) jako PRIMAR ale to se mi nezda jako dobre reseni. Ale pokud nette/database nebude schopno pracovat s primarnim klicem o 2 sloupeccich tak me nic jineho nezbyde. Proto se nejdrive ptam.
Editoval zdrhal (2. 4. 2014 18:33)
- japlavaren
- Člen | 404
v tvojom pripade ti chyba primary ked v tab. kola a id_zavodu je cudzi kluc (nie primarny)
- dopln si id do tab kola a malo by byt po probleme
- zdrhal
- Člen | 42
japlavaren napsal(a):
v tvojom pripade ti chyba primary ked v tab. kola a id_zavodu je cudzi kluc (nie primarny)
- dopln si id do tab kola a malo by byt po probleme
Jsi si jisty, ze v tabulce kde se PK sklada ze dvou sloupecku nemuze byt jeden PK sloupecek zaroven i FK? treba mysql s tim pri grafickem nahledu problem vubec nemela a zobrazila to spravne. I v me hlave me to prijde takto ok. Duplicita nehrozi kazdy kolo je pevne identifikovany ideckem zavodu a cislem kola. Nevim nevidim v tom problem.
Kazdopadne co jsem v anglictine vygooglil, tak nette pred rokem tak este
neumelo pracovat se dvema sloupecky jako PK. Ted by to melo fungovat tak ze ty
sloupecky zadas do array(klic_1, klic_2)
. Ta funkce ma vstupni
parametry mixed (bud string nebo array), ale stejne me to nefungovalo. Takze
jsem zvolil presne jak rikas pridal jsem si sloupecek s id.
Editoval zdrhal (2. 4. 2014 23:50)
- zdrhal
- Člen | 42
mkoubik napsal(a):
Nette database v aktuální verzi nikde nepoužívám, ale mám takové tušení že vícenásobné primární klíče nepodporuje (nebo aspoň nepodporovala). Každopádně ten db návrh je naprosto ok, jen prostě NDB předpokládá že primární klíč bude jeden sloupeček (a ideálně integer).
Ja si prave rikam no diky za utvrzeni. No nakonec ale to reseni co mi radil kolega vyse neni zas uplne tak spatne, ikdyz to neni uplne to prave orechove.
Editoval zdrhal (2. 4. 2014 23:52)