nette/database primarni klic na dvou sloupcich .. error

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

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

ak potrebujes 2 primary kluce v tabulke, nieco je zle… nestaci ti ten druhy uniq?

zdrhal
Člen | 42
+
0
-

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

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

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)

mkoubik
Člen | 728
+
0
-

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).

zdrhal
Člen | 42
+
0
-

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)

zdrhal
Člen | 42
+
0
-

Este takovy dodatek tady je primo ta funkce co se o to stara.

japlavaren
Člen | 404
+
0
-

naklikaj si db v admineri a tam si natukas aj cudzie kluce a mas pokoj