Ukládání id posledních záznamů do dvou repositářů
- Donkeykong
- Člen | 39
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
no proste provedes update toho clanku po vytvoreni zaznamu v tabulce obrazku
- Donkeykong
- Člen | 39
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
proc?
ulozis article s image_id=null
ulozis image s article_id
upravis article a nastavis mu image_id
- Donkeykong
- Člen | 39
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)
- Donkeykong
- Člen | 39
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 ? :)