Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem ORM vrstva v PHP

Ahoj, mám takový programátorský oříšek v PHP.

Vyrábím "ORM" vrstvu nad MySQL databází, chtěl bych aby to fungovalo tak že nějaké u třídy zavolám najdi a vrátí se mi instance entity objektu, (mělo by to umět create, read, update, delete)

např:

$obrazek = Image::findById(2); //najde obrázek s id 2, a vrátí jako instanci entity obrázek (instance má atributy jako jsou sloupce v dané tabulce)
$obrazek->set('jméno', 'pejsek a kočočka'); //nastaví obrázku jméno
$obrazek->save(); //změny se uloží do databáze

takhle jednodušše mi to funguje ale s relacemi se to zamotává

Teď to mám udělané tak že instance objektů ukládám do "datastore", když mám relaci 1:N, v práci jsou lidé, nechám najít práci a lidi, všechny instance se uloží do datastore, a do práce v atributu lidé se dá odkaz na instance lidí.
Takže tam není žádná redundance a jsem s funkcí spokojen, i vztah N:N (ten ted implementovan neni) by imho neměl být problém.

Mám ale následující problém:

obrázek může mít více popisů v různých jazycích

v DB je struktura:
obrázek ---< popis >--- jazyk

"popis" má cizí klíče ID obrázku a ID jazyka (což dohromady tvoří primární klíč)

(popis je jakoby vazební tabulka mezi obrázkem a jazykem, ale má i svoje sloupce, takže ji nemohu zanedbat jako kdyby to byla vazba N:N, kterou bych snad uměl implementovat)

a ted se to komplikuje, nevím pod jakým klíčem nalezený popis uložit do datastoru, a jak k tomu pak přistupovat

Nemáte někdo nějaký nápad? Sedím nad tím už týden v kuse a nic mě nenapadá, prolezl jsem spoustu stránek s tutoriály na ORM atd.. ale nemohu s tím hnout.
Není ta idea úplně špatně?

Prosím neříkejte mi abych použil nějaké hotové řešení, Doctrine, Active record, atd... (nemám to na produkční web, chci tomu jen porozumět)

P.S. hledám řešení kde by bylo minimální zatížení databáze, tzn. ne zbytečné dotazy..

Předmět Autor Datum
Nenašly se žádné odpovědi.

Zpět do poradny Odpovědět na původní otázku Nahoru