Doctrine – generování entit
- Namespace
- Člen | 81
Pro práci s Doctrine v Nette mohu doporučit Kdyby/Doctrine (při instalaci composerem si to dotáhne potřebné závislosti včetně console).
Jinak instalaci Kdyby/Doctrine pěkně popsal @chemix zde a základy práce s Kdyby/Doctrine od @mrtnzlml zde. Obě videa doporučuji shlédnout. Jsou tam velice srozumitelně objasněny základy práce s Doctrine
Editoval Namespace (23. 8. 2015 22:36)
- llook
- Člen | 407
Ten návod výše je pro Symfony, skript app/console
se
v Symfony používá pro spouštění CLI příkazů. Nicméně ani
s Kdyby/Console tento konkrétní příkaz doctrine:mapping:import
nerozjedeš, protože je z balíku DoctrineBundle, což je něco jako extension
pro Symfony…
Návod pro Doctrine bez Symfony je tady: http://docs.doctrine-project.org/…e/tools.html#…
Nemám s tímto přístupem ale zrovna nejlepší zkušenosti. Dnes bych si ty entity radši nabušil ručně, když už bych musel vycházet z existující databáze. A to postupně, vždy pouze ty tabulky a sloupce, které fakt potřebuji.
Jinak u nových projektů se v Doctrine preferuje opačný postup, tedy nejdřív psát entity a z nich generovat definice tabulek.
- duskohu
- Člen | 778
Caute, podarilo sa vam nejako rozchodit generovanie entit z DB? Ja som pouzil tento navod
orm:convert-mapping --from-database php ./src
Problem je v tom ze mi to vygenerovalo len nejaku definiciu v PHP, ale nie Objekt, napr:
use Doctrine\ORM\Mapping\ClassMetadataInfo;
$metadata->setInheritanceType(ClassMetadataInfo::INHERITANCE_TYPE_NONE);
$metadata->setPrimaryTable(array(
'name' => 'brands',
));
$metadata->setChangeTrackingPolicy(ClassMetadataInfo::CHANGETRACKING_DEFERRED_IMPLICIT);
$metadata->mapField(array(
'fieldName' => 'id',
'columnName' => 'id',
'type' => 'integer',
'nullable' => false,
'unsigned' => true,
'comment' => '',
'id' => true,
));
$metadata->mapField(array(
'fieldName' => 'name',
'columnName' => 'name',
'type' => 'string',
'nullable' => false,
'length' => 255,
'fixed' => false,
'comment' => '',
));
$metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_IDENTITY);
Neviete ako generovat Objekt?