Správný návrh entit u vazby s příznakem

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

Ahoj všem,
už nějakou chvíli si tu lámu hlavu s mojí situací, kdy potřebuju správně nadefinovat entity.

O co mi jde
Potřeboval bych mezi 2 entity (kurz a uživatel) přidat vazební tabulku, která ale bude definovat, zda kurz absolvoval úšpěšně či naopak. Vazba M:M mezi kurzem a uživatelem je jednoduchá, ale jak to udělat vč. příznaku?

Definice v kurzu

	/**
	 * @ORM\ManyToMany(targetEntity="ClientPersonEntity", cascade={"persist"}, inversedBy="courses")
	 * @ORM\JoinTable(name="course_persons",
	 *        joinColumns={@ORM\JoinColumn(name="person_id", onDelete="cascade")},
	 *        inverseJoinColumns={@ORM\JoinColumn(name="course_id")}
	 *    )
	 * @var ArrayCollection|ClientPersonEntity[]
	 */

Definice uživatele

	/**
	 * @ORM\ManyToMany(targetEntity="CourseEntity", mappedBy="persons")
	 * @var ArrayCollection|CourseEntity[]
	 */

Vážně na toto musím definovat entitnu, která bude reprezentovat pouze vazbu M:M → M:M?

Šaman
Člen | 2666
+
+1
-

Tak zrovna tady bych to na samostatnou entitu viděl. Ne-li na jinou strukturu (opravdu nikdy nebudeš evidovat kdy absolvoval, kdo zkoušel, možná nějaké hodnocení, info o placení apod?)
Ale obecně mě vazba s příznakem zajímá. Nenapsal jsi jaký ORM používáš, tohle vypadá na Doctrine?

Tirus91
Člen | 199
+
0
-

@Šaman
promiň, nějak mi to vypadlo. Ano, jedná se o Doctrine.

V tuto chvíli je požadavkem jen to, aby se evidovalo, kdo je na kurz přihlášený (zadává to tam klient sám) a následně eviduje pouze, zda kurz absolvoval úspěšně či naopak. Další, co by možná stálo za to, aby se k tomu stavu rovnou evidoval nějaký dokument (přesněji certifikát).

Kdy a kde absolvoval daný uživatel kurz, je dáno v definici samotné entity kurzu, jelikož kurz sám o sobě nese tyto údaje. Nejedná se o neustále jeden kurz, který se následně opakuje.

Oli
Člen | 1215
+
0
-

Myslím že jo. Já jsem to udělal v podstatě stejně jako je třeba tady http://stackoverflow.com/…-extra-field#…