Nette spojení tří tabulek, related a cizí klíče rubrika: Programování: PHP
Dobrý den,
nejdřív popíši situaci: mám 3 tabulky (posts, comments, users), v comments tabulce jsou cizí klíče na id postu,
takže jsem mohl vypisovat commenty jednoduše $post->related('comments')
, ale v tabulce comments mám ještě jeden cizí klíč s id uživatele z tabulky users (nedávám tam přímo jméno, které by to vyřešilo, protože uživatel bude mít možnost změnit jméno). Potřeboval bych nějaký návrh, jak propojit comments, které si tahám z db pomocí $post->related('comments')
, a ideálně aby tam místo id uživatele bylo jméno uživatele u tabulky users, pro každý comment. Klidně to celé překopu, ale potřeboval bych nějaký návrh jak to udělat.
Stručné schéma db zde: http://i.imgur.com/WuBPUwy.png
Děkuji a doufám, že někdo pomůže.
Ahoj koukl bych se na https://doc.nette.org/cs/2.4/database-table, ukázka přímo v příkladu. Akorát sloupec user v comments bych přejmenoval na user_id.
Příklad z dokumentace je:
echo 'tags: '; foreach ($book->related('book_tag') as $bookTag) { echo $bookTag->tag->name . ', '; }
V tvém případě:
echo 'comments: '; foreach ($post->related('comments') as $comment) { echo $comment->users->name . ', '; }
Druhá možnost je tuším
echo 'comments: '; foreach ($post->related('comments')->select('id, post_id, content, created_at, users.name AS user_name') as $comment) { echo $comment->user_name . ', '; }
Chvíli jsem nette database aktivně nepoužíval, každopádně dokumentace to docela pokrývá...
Koukl bych se být tebou na jmené konvence, které nette database předpokládá na názvy cizích klíču, tabulek etc...
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře