Doctrine – generování entit

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

Dobrý den, chci se zeptat jestli lze z mysql databáze generovat entity pro doctrine. není třeba plugin pro phpstorm? díky :)

bluray
Člen | 178
+
0
-

Díky za odpověď, ale jak to funguje? co je to app/console? Když v PHPStormu spustím tento příkaz
php app/console doctrine:mapping:import --force AcmeBlogBundle xml
tak mi to vypíše Could not open input file: app/console

Namespace
Člen | 81
+
+1
-

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

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.

bluray
Člen | 178
+
0
-

A jak se z entit generují tabulky?

Oli
Člen | 1215
+
0
-

@bluray psal to @chemix na svém blogu. Je to ten odkaz, který ti už posílal @Namespace. Důležité je hlavně mít dobře namespace v metadata. Zkus si to a případně se doptej konkrétně, jestli ti něco nepůjde…

Editoval Oli (24. 8. 2015 7:35)

kejlicz
Člen | 201
+
0
-

Post jsem smazal. Odpovídal jsem omylem na něco jiného.

Editoval kejlicz (24. 8. 2015 17:06)

duskohu
Člen | 778
+
0
-

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?