Ukládání id posledních záznamů do dvou repositářů

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

Ahoj, mám takový problém s ukládáním id posledních záznamů do dvou repositářů. Mám dva repositáře: articleRepository a imageRepository

V presenteru mám formulář s inputy: title, content a poté tlačítko pro upload obrázku. V obsluze formuláře v presenteru mám:

<?php
$lastArticle = $this->articleRepository->insertArticle($values->title, $values->content);
$this->imageRepository->insertImage($path, $filename, $lastArticle);
?>

V ArticleRepository

<?php
public function insertArticle($title, $content)
	{
		 return $row = $this->getTable()->insert(array(
			'title'=> $title,
			'content'=> $content
			));
	}
?>

v ImageRepository mám:

<?php
public function insertImage($path, $filename, $lastArticle)
	{
			return $row = $this->getTable()->insert(array(
			'url'=> "$path/$filename",
			'article_id'=> $lastArticle->id
			));
	}

?>

Čili při uploadu uložím do tabulky article title a content článek a do tabulky image do políčka url název a adresu obrázku a poté do políčka article_id id posledního vkládaného článku. Díky tomu si pak můžu v šabloně u každého článku přes related zobrazit obrázek, který k němu patří.

Problém je, že do budoucna bych si chtěl v tabulce article vytvořit políčko image_id a do něj naopak ukládat id uploudovaného obrázku. Postup by měl být stejný, protože v ImageRepository vracím do $row id posledního vkládaného obrázku. Bohužel je zde potom problém s použitím v presenteru. Protože část kde bych volal oba repositáře mi samozřejmě při snaze odeslat $lastImage ve kterém by mělo být id posledního obrázku hodí chybu, že proměnná neexistuje, protože samozřejmě v momentě kdy ji chci poslat do repositáře, jsem ještě nevrátil $row z funkce v repositáři

<?php
//zde hodi samozrejme chybu
$lastArticle = $this->articleRepository->insertArticle($values->title, $values->content, $lastImage);
// tady je to ok
$lastImage = $this->imageRepository->insertImage($path, $filename, $lastArticle);
?>

Co s tím? Jsem si jistý že existuje nějaké úplně jednoduché řešení a mě napadají samé složité prasečiny :)

David Matějka
Moderator | 6445
+
0
-

no proste provedes update toho clanku po vytvoreni zaznamu v tabulce obrazku

Donkeykong
Člen | 39
+
0
-

matej21 napsal(a):

no proste provedes update toho clanku po vytvoreni zaznamu v tabulce obrazku

No ale v tom pripade to zase bude vyhazovat chybu u toho druheho vkladani. Je to na sobe zavisle :)

David Matějka
Moderator | 6445
+
0
-

proc?
ulozis article s image_id=null
ulozis image s article_id
upravis article a nastavis mu image_id

Donkeykong
Člen | 39
+
0
-

No toto je prave jedno z reseni ktere me napadlo, ale myslel jsem jestli neexistuje nejaky elegantnejsi postup bez te nasledne editace :)

Editoval Donkeykong (23. 7. 2013 20:36)

Glottis
Člen | 129
+
0
-

no jinak tuhle docela zbytecnou vazbu neudelas :)

Donkeykong
Člen | 39
+
0
-

Glottis napsal(a):

no jinak tuhle docela zbytecnou vazbu neudelas :)

Zbytecnou, mno preci v momente kdy udelam moznost nahravat k jednomu clanku vice obrazku a pote urcit ktery bude hlavni, tak to tak zbytecne nebude ne ? :)