Alapból a doctrine OneToMany relation esetén order by desc rendezi a kapcsolódó értékeket, ami nem jó, ha például szeretnénk olyat csinálni, hogy listázzuk az elemeket, és a legrégebbit szeretnénk legelőre tenni.
OneToMany relation esetén az Entity-ben a következő módon lehet megadni azt, hogy milyen orderby-al töltse fel a kapcsolódó értékeket:
/**
* @ORM\OneToMany(targetEntity="Article", mappedBy="section")
* @ORM\OrderBy({"id" = "ASC"})
*/
protected $articles;
Ezáltal nem a default order by lesz, ami sok esetben nem a legjobb.
2012. augusztus 26., vasárnap
2012. augusztus 4., szombat
Data transformers
Egy izgi dolgot találtam.
Ha szeretnénk egy formba beírt értéket valamilyen másmilyen formába átalakítani mentés előtt, vagy szeretnénk elmenteni egy másik Entity-t, és nem szeretnénk select-et használni amit alapból nem lehet, mert az entity FieldType őse a choice field.
Ilyen esetekben jól jöhetnek a data transformerek, amiben átalakítjuk a felhasználó által megadott adatokat valami másra. ( pl entity esetén id-ból objektumot csinálunk).
Nekem elsőre nem kicsit gányolásnak tűnik, mivel át kell adnunk a saját Type-unknak az entity manager-t, ami elég furcsa.
http://symfony.com/doc/current/cookbook/form/data_transformers.html
Azt mondjuk elfelejtették beleírni, hogy ha a getDefaultOptions által visszaadott tömbben nincs benne az "em" kulcs, akkor kapunk egy exception-t.
Ha szeretnénk egy formba beírt értéket valamilyen másmilyen formába átalakítani mentés előtt, vagy szeretnénk elmenteni egy másik Entity-t, és nem szeretnénk select-et használni amit alapból nem lehet, mert az entity FieldType őse a choice field.
Ilyen esetekben jól jöhetnek a data transformerek, amiben átalakítjuk a felhasználó által megadott adatokat valami másra. ( pl entity esetén id-ból objektumot csinálunk).
Nekem elsőre nem kicsit gányolásnak tűnik, mivel át kell adnunk a saját Type-unknak az entity manager-t, ami elég furcsa.
http://symfony.com/doc/current/cookbook/form/data_transformers.html
Azt mondjuk elfelejtették beleírni, hogy ha a getDefaultOptions által visszaadott tömbben nincs benne az "em" kulcs, akkor kapunk egy exception-t.
Symfony2 és az ajax/json
Symfony2-ben a következő képpen lehet json-ben visszaadni a tartalmat:
public function indexAction()
{
$data = array();
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function indexAction()
{
$data = array();
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
Entity-ben datetime default értékének now()-ra állítása
Szenvedtem most azzal egy sort, hogy ha van egy Entity-m, aminek van egy datetime típusú mezője, akkor azt hogyan állítsam alapértelmezettben mostra.
A doctrine2 dokumentációjában ez van:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/cookbook/working-with-datetime.html
A megoldás symfony-ban az, hogy a construct-orba kell tenni egy alapértéket (aminek DateTime típusúnak kell lennie, now() nem jó). Sajnos annotation-be nem lehet beleírni ezt, pedig jó lenne, ha lehetne.
public function __construct()
{
$this->created = new \DateTime("now");
}
A doctrine2 dokumentációjában ez van:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/cookbook/working-with-datetime.html
A megoldás symfony-ban az, hogy a construct-orba kell tenni egy alapértéket (aminek DateTime típusúnak kell lennie, now() nem jó). Sajnos annotation-be nem lehet beleírni ezt, pedig jó lenne, ha lehetne.
public function __construct()
{
$this->created = new \DateTime("now");
}
Feliratkozás:
Bejegyzések (Atom)