Nette 2.2 s ORM Doctrine 2 nebo NDBT

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

Ahoj,

Jdu vytvářet nový projekt a asi bych rád zkusil Doctrine 2. Nicméně vše co jsem našel a přečetl je krásné a proto bych to chtěl zkusit, ale většina článků je 2 roky stará, navíc se většina z nich zabývá přímo D2 ale nějaký smysluplný návod jak D2 integrovat do Nette jsem nanašel.

Jde mě o to co dát do config.neon a co do bootstrap.

Dále bych potřeboval kdyby mě někdo ve zkratce řekl jaký je rozdíl mezi KDYBY\Doctrine https://github.com/Kdyby/Doctrine pripadne Nella\Doctrine http://doc.nellafw.org/cs/doctrine a Doctrine http://www.doctrine-project.org/

nebo je Doctrine hloupý nápad a mám se držet NDBT?

jiri.pudil
Nette Blogger | 1032
+
+1
-

Kdyby\Doctrine nabízí právě pohodlnou integraci Doctrine do Nette. Určitě si projdi dokumentaci, je tam pěkně popsané, jak na to. Případné dotazy pak můžeš směřovat rovnou do Kdyby fóra.

iguana007
Člen | 970
+
+2
-

Ohledně rozdílu:
https://packagist.org/…lla/doctrine
This package is abandoned and no longer maintained. The author suggests using the kdyby/doctrine package instead.

Tomáš Votruba
Moderator | 1114
+
0
-

@ondraondra81 Doctrine je skvělý nápad, má široký ekosystém v zahraničí i u nás. Kdyby\Doctrine jak píše Jirka pro začátek postačí. Rozšiřující zdroje najdeš na Awesome Doctrine.

ondraondra81
Člen | 82
+
0
-

OK přidal jsem do composeru „kdyby/doctrine“
Do config.neon jsem pridal

extensions:
    # add theese four lines
    console: Kdyby\Console\DI\ConsoleExtension
    events: Kdyby\Events\DI\EventsExtension
    annotations: Kdyby\Annotations\DI\AnnotationsExtension
    doctrine: Kdyby\Doctrine\DI\OrmExtension

a ted nevim :)
v návodu je

doctrine:
    user: root
    password: pass
    dbname: sandbox
    metadata:
        App: %appDir%

jinde zase:

parameters:
	database:
		driver: pdo_mysql
		host: localhost
		dbname: test
		user:
		password:
		charset: utf8
		collation: utf8_czech_ci

doctrine:
	connection: %database%
	console: true

migrations:
	connection: @doctrine.connection

services:
	database: @doctrine.entityManager

abych se priznal ten druhy se me zamlouvá více, navíc je z něj patrná i použitá DB a host.
co netuším je k čemu je migrations. Co je správně pro Kdyby?

Musím nějak konfigurovat Kdyby/Events, Kdyby/Console and Kdyby/Annotations. ?

a poslední dotaz: Musím dědit Entitu od \Kdyby\Doctrine\Entities\BaseEntity ?

mrtnzlml
Člen | 140
+
0
-

ondraondra81 napsal(a):

…ale většina článků je 2 roky stará, navíc se většina z nich zabývá přímo D2 ale nějaký smysluplný návod jak D2 integrovat do Nette jsem nanašel…

Stále (i do budoucna) aktuální článek: http://www.zeminem.cz/…tej-doctrine
Je to psáno tak, aby ten kdo dělá s NDBT dokázal přebruslit velmi pohodlně… (-:

V konfiguraci většinou úplně stačí toto:

doctrine:
	user: root
	password: ""
	dbname: nazevdb

Driver a ostatní věci tam můžeš naspat, ale je to zbytečně navíc…

Musím nějak konfigurovat Kdyby/Events, Kdyby/Console and Kdyby/Annotations?

Ne.

Musím dědit Entitu od \Kdyby\Doctrine\Entities\BaseEntity?

Ano. Tak prý ne… :-)

Editoval mrtnzlml (27. 8. 2014 13:56)

David Matějka
Moderator | 6445
+
0
-

Musím dědit Entitu od \Kdyby\Doctrine\Entities\BaseEntity ?

ne. ta entita pouze pridava nejakou magii… viz anotace

Editoval matej21 (27. 8. 2014 13:55)

akadlec
Člen | 1326
+
0
-

Musím dědit Entitu od \Kdyby\Doctrine\Entities\BaseEntity?

Ano.

Ne.

E: Sakra @matej21 byl rychlejší ;)

Editoval akadlec (27. 8. 2014 13:54)

ondraondra81
Člen | 82
+
0
-

Díky za rady.
Jdu to nejak zkusit a uvidíme.

ondraondra81
Člen | 82
+
0
-

jeste se zeptám.

musím používat to @ORM

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="Users")
 */


class User extends Entities\BaseEntity
// ....
/**
     * @ORM\column(type="string")
     */

nebo můžu jen

/**
 * @Entity
 * @Table(name="Users")
 */


class User extends Entities\BaseEntity
// ....
/**
* @column(type="string")
*/

Editoval ondraondra81 (27. 8. 2014 16:20)

jiri.pudil
Nette Blogger | 1032
+
0
-

Doctriní anotace jsou reprezentované třídami a platí pro ně stejná pravidla, jako kdybys s názvem té třídy pracoval kdekoliv jinde v kódu. Proto tam je ostatně to use Doctrine\ORM\Mapping as ORM;. Kdybys je chtěl používat bez ORM, musel bys uvést v use každou použitou anotaci zvlášť.

David Matějka
Moderator | 6445
+
0
-

melo by to jit pomoci setDefaultAnnotationNamespace, ale radeji pouzivam tu verzi s use :)