Doctrine, $dao->save() DEPRECATED – jaky zvolit tedy korektni pristup?
- Ja
- Člen | 260
Zdravim,
hraju si s doctrine v nette
mam klasickou tridu Customers, ktera se stara o entity typu Customer. (rika se
vlastne te tride Customers fasada, pokud obsahuje nejakou urcitou logiku? –
findCustomernameByEmail(..) atd?)
Mam tedy napr. tento kod (inspirace zeminemem – diky!)
<?php
class Customers extends Nette\Object
{
public function findBy(array $criteria, array $orderBy = NULL, $limit = NULL, $offset = NULL)
{
return $this->dao->findBy($criteria, $orderBy, $limit, $offset);
}
public function findOneBy(array $criteria, array $orderBy = NULL)
{
return $this->dao->findOneBy($criteria, $orderBy);
}
public function save($entity = NULL, $relations = NULL)
{
return $this->dao->save($entity, $relations);
}
public function delete($entity, $relations = NULL, $flush = Kdyby\Persistence\ObjectDao::FLUSH)
{
$this->dao->delete($entity, $relations, $flush);
}
// atd
?>
- problem je, ze phpstorm mi ukazuje, ze metody save a delete jsou deprecated a ze bych mel pouzit misto toho persist() a flush() – je to zejmena z toho duvodu, ze flush je casove narocnejsi akci a ze bych tedy mel idealne flushovat vice zmen najednou?
- jak to tedy uchopit v pripade, ze save, a deleted jsou deprecated? normalne zavolat na entityManageru persist a flush v ramci metody save()? to bych si ale defakto vubec nepomohl. Nebo flushovat v presenteru v pripade, ze provedu v instanci Customers vice akci? to mi zase prijde, ze by se na to casto mohlo zapomenout
moc diky za pripadny navedeni a sorry za moje neomalene formulace :)
J.
- Jan Mikeš
- Člen | 771
@FilipProcházka nedoporucuje EntityDao pouzivat vubec, nekde (nechce se mi hledat kde :) ) se vyjadril, ze s odstupem casu DAO povazuje za omyl a nechava ho pouze z historickych duvodu.
Na save urcite $em->persist()
a $em->flush()
je na tobe, jestli budes flushovat po po kazdem persistu, ale jak jsi sam
napsal, flush se doporucuje co nejvice omezovat (nekdy se tomu ale
vyhnout neda).
Misto delete pouzivej $em->remove()
to bych si ale defakto vubec nepomohl
Jde o to, ze DAO je deprecated a muze byt v budoucnu uplne zruseno, takze je doporuceno se nespolehat na jeho metody
- Ja
- Člen | 260
Jj, vim ze muze byt (a pravdepodobne i bude) v budoucnu zruseno.
Venoval jsem tomu pomerne hodne casu a mam v tom trochu maglajz, pres repository k dao, pres polemiky ohledne petivrstvyho modelu. Je mi jasny, ze kazdy pristup ma sva pozitiva/negativa a hodi se pro urcite typy projektu, ale nejaky startovni bod by to precejen chtelo.
K tomu nepouzivani EntityDao – tam jsem teda cetl, ze nedoporucuje od EntityDao dedit, coz se defakto tady nedeje. Kazdopadne pohledam, jestli neco ohledne ‚kroku vedle s DAO‘ najdu.
- Jan Mikeš
- Člen | 771
@Ja zkus procist toto: https://forum.nette.org/…o-dava-smysl mozna tam najdes neco uzitecneho