Propojení tabulek pomocí M:N

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

Zdravím mám takový problém při spojování tabulek…
Mam tabulku post(id,nazev,datum)
dále tabulku user(id, jmeno)
a tabulku post_user(id, post_id, user_id)
Kdy tabulka post může mít libovolný počet user. V tabulce post_user mám nastavené cizí klíče… Nyní zkrátka potřebuji aby se mi v šabloně ti uživatelé vypsali. Zkoušel jsem to nějak tkhle:

<div n:foreach="$post->related('post_user') as $p_user">
                    <div>{$p_user->user->jmeno}</div>
</div>

podle tohoto návodu: https://doc.nette.org/…ase/explorer
Ale zřejmě jsem to napsal špatně. Moc děkuji za každou pomoc

David Matějka
Moderator | 6445
+
0
-

a co to hlasi za chybu? zkusil si smazat cache?

luboshnedy
Člen | 25
+
0
-

Cache jsem zkusil smazat a nic hlásí to tuto chybu:
Trying to get property of non-object

David Matějka
Moderator | 6445
+
0
-

a neni nekde v post_user zaznam, kde user_id = NULL

luboshnedy
Člen | 25
+
0
-

Ano je tam

luboshnedy
Člen | 25
+
0
-

To znamená že tam musí být nějaká podmínka ?

nightfish
Člen | 519
+
0
-

A je v tabulce post_user ten řádek k něčemu? Nějak si nedokážu představit use-case, kdy bych potřeboval mít ve vazební tabulce jeden z vazebních sloupců nullový…

Editoval nightfish (11. 7. 2017 11:19)

luboshnedy
Člen | 25
+
0
-

Ne je tam k ničemu ale moc nevím jak změnit to ukládání aby tam null nebylo

nightfish
Člen | 519
+
0
-

luboshnedy napsal(a):

Ne je tam k ničemu ale moc nevím jak změnit to ukládání aby tam null nebylo

Kontrolovat před uložením, jestli není některá z těch dvou hodnot null? Konkrétnější radu ti bez popisu ukládání poskytnout neumím.

luboshnedy
Člen | 25
+
0
-

Jo ok to nějak zvládnu ale mam problém, že když chci odebrat výchozí hodnotu z databáze u user_id tak mi to vyhodí chybu: Cannot change column ‚user_id‘: used in a foreign key constraint ‚post_user_ibfk2

luboshnedy
Člen | 25
+
0
-

Už se mi to povedlo tkže vše funguje jak má díky moc :)