Doctrine, $dao->save() DEPRECATED – jaky zvolit tedy korektni pristup?

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

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
?>
  1. 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?
  2. 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
+
+1
-

@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
+
0
-

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
+
0
-

@Ja zkus procist toto: https://forum.nette.org/…o-dava-smysl mozna tam najdes neco uzitecneho

Ja
Člen | 260
+
0
-

Prekvapive jsem na tohle nenarazil. Moc diky.
Vcera jsem jeste neco procital a ideove jsem skoncil na tom, jak to vlastne Filip shrnul, takze skvely :)