nORMa – ORM manager pro Nette
- Rampus
- Člen | 39
Ahoj všichni,
po delší době jsem letos oprášil svůj starší projekt light ORM manageru.
A dotáhl jsem ho do použitelné verze.
I rozhodl jsem se, že ho dám k dispozici komunitě, které mi mnohokráte
pomohla s nějakým problémem s Nette.
Takže moje ORM vzniklo, protože jsem byl líný učit se Doctrinu a přišla mi moc těžkopádná.
Celý popis by se sem nevešel a tak jsem sepsal stručný návod zde (Je tam i odkaz na git)
Jsou tam i jednoduché výkonostní testy s porovnáním s Dibi a Nette DB
(Doctrine není – nebudu se jí učit:) )
Testy se spouští v reálném čase, takže budete dostávat různé
výsledky, podle zatížení serveru).
Určitě se v programu najde pár chyb a testy jsou odfláknuté (zase ta moje lenost na testy), ale mám to již nasazené v ostrém provozu na dvou eshopech a na svém vlastním účetnictví, které mám jako web aplikaci, takže tomu poměrně dost důvěřuju.
Snad to bude někomu k užitku. Dotazy se pokusím zodpovědět zde. Nápady, náměty a pull requesty jsou vítány :)
- Pavel Janda
- Člen | 977
Trošku si protiřečíš. :P
„A dotáhl jsem ho do použitelné verze.“ vs „určitě to obsahuje chyby … testy jsou odfláknuté … všechno na vaší vlastní zodpovědnost“.
- Rampus
- Člen | 39
Pavel Janda napsal(a):
Trošku si protiřečíš. :P
„A dotáhl jsem ho do použitelné verze.“ vs „určitě to obsahuje chyby … testy jsou odfláknuté … všechno na vaší vlastní zodpovědnost“.
Myslel jsem to tak, že v každém programu je aspoň jedna chyba, které se
projeví jen ve specifické situaci a za běžného provozu se třeba rok
neprojeví, což každý, kdo nějakou dobu programuje jistě zná :)
A testy jsou jen základní, jinak mám otestováno provozem.
- Pavel Kravčík
- Člen | 1195
Určitě palec nahoru, že jsi to dotáhl do použitelného řešení. Chce
to více dotáhnout. Třeba věc jako $this->prepareData();
by
mě asi strašně iritovala.
A ještě informace, že něco bude implementováno a třeba rok není vypadá tak nějak zvlášně. Jinak plus.
- Rampus
- Člen | 39
Pavel Kravčík napsal(a):
Určitě palec nahoru, že jsi to dotáhl do použitelného řešení. Chce to více dotáhnout. Třeba věc jako
$this->prepareData();
by mě asi strašně iritovala.A ještě informace, že něco bude implementováno a třeba rok není vypadá tak nějak zvlášně. Jinak plus.
$this->prepareData();
ve většině případů není
potřeba, ale může nastat situace, kdy jo. Ale máš pravdu, dám to na tvrdo
do parseru, ať to tam doplňuje automaticky a bude po starostech.
To neimplementováno se týká vazby m:n.
V současné době se to dá řešit přes další entitu:
<?php
class Book{
/** @var BookTag @collection */
public $bookTag;
}
class BookTag{
/** @var Book @entity */
public $book;
/** @var Tag @entity */
public $tag;
}
class Tag{
/** @var string */
public $name;
}
foreach ($book->bookTag as $tag){
$tag->name;
}
// nebo
$books=$em->getAll('BookTag')
->where(['tag in' => $em->getOne('Tag',['name','sci-fi'])->getId()]);
foreach ($books->book as $book){
$book->name;
}
?>
Jen přemýšlím, jestli to tak nechat, nebo to nějak zjednodušit, aby
tagy byly přímo kolekce booku definováné přes anotaci. V první verzi jsem
to tak měl, ale pak jsem úplně předělal filozofii db requestů a už jsem
to tam nedával.
Ale asi se na to vrhnu, až bude chvilka času.
- Felix
- Nette Core | 1196
Rampus napsal(a):
Jen přemýšlím, jestli to tak nechat, nebo to nějak zjednodušit, aby tagy byly přímo kolekce booku definováné přes anotaci. V první verzi jsem to tak měl, ale pak jsem úplně předělal filozofii db requestů a už jsem to tam nedával.
Ale asi se na to vrhnu, až bude chvilka času.
Ja bych to tak klidne nechal. Ve vetsine pripadu mam u M:N vazeb nejake dalsi sloupecky, takze mezi-entitu potrebuju tak jako tak.
Radsi bych se zameril na doladeni testu. Proc jsi vlastne volil bitbucket? Resp. klidne bych to tedka prevedl na Github, dokumentaci muzes vest bud v README nebo ve vlastni sekci (/docs) jako to maji Kdyby, pripadne i ve wiki. Usetrilo by ti to nejakou praci :-).
Btw: ten odkaz na git v dokumentaci skoro nejde najit, resp. ja ho nemoh na prvni pokus najit.
- Rampus
- Člen | 39
Felix napsal(a):
Radsi bych se zameril na doladeni testu. Proc jsi vlastne volil bitbucket? Resp. klidne bych to tedka prevedl na Github,…
Na Bitbucketu jsem už řadu let. Tenkrát jako jediní nabízeli privátní
repozitáře zdarma. To ještě jeli jen na Mercurialu. Teď už podporují
i git a mají i docela šikovný gui klient SourceTree. Tak jsem u nich
zůstal.
Na github se to dá migrovat, ale musel bych se s tím naučit :)
Na testech průběžně pracuju, ale jsem teď zavalen prací… Všichni všechno chtějí do konce roku, určitě to znáte…
Odkaz na git předělám.