Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
#1 před 5 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Tak jsem se konečně dokopal k tomu hodit to na GitHub :-)
Celé toto řešení je trvořeno jako extension pro nový Dependency Injection Container.
Dokumentace
http://doc.nellafw.org/…ons/doctrine
Sandbox
Hotový a připravený sandbox najdete na GitHubu
Nějáké nápady na změnu / vylepšení?
Changelog
v1.0
init
v2.0
- config sections
- Nette 2.0 stable
- Doctrine 2.2.0
v2.1
- Nette 2.0.1 stable
- Doctrine 2.2.1
- namespace Addons → NetteAddons
v2.2
- Nette 2.0.2
- Symfony Console 2.0.12
- new config
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#2 před 5 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Btw co takle založit na http://addons.nette.org novou sekci „Extensions“ ?
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#3 před 5 měsíci
- bazo
- Nette guru

- Registrovaný: 28. 9. 2009
- Příspěvky: 303
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
dal by sa spravit taky sandbox aj pre mongo ODM?
#4 před 5 měsíci
- newPOPE
- Nette guru

- Registrovaný: 4. 6. 2009
- Příspěvky: 280
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
bazo napsal(a):
Hi, nieco mam rozrobene. Akurat je to pre verziu ktora je v /download (vyhradne pouzivam len tie :-))
Mohol by som to v dohladnom case dat von aspon v akom takom stave :-D. Ostatni to pomocou pull-requestov doladia :-)
#5 před 4 měsíci
- mbskot
- Člen

- Registrovaný: 7. 1. 2011
- Příspěvky: 59
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Patrik Votoček: sorry ak sa sprosto pýtam, ale prečo je pre entity
východzie miesto [%appDir%]?
Ja som ich mal doteraz v App\Model\Entities a podobne som mal Repositories. Je
to zlé? Ak hej, aká je doporučená adresárová štruktúra pre súbory
Doctrine a kde by mala byť umiestnená?
#6 před 4 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
@mbskot: rozhodně není špatně to co používáš ale právě kvůli tomu že každý používá jinou adresářovou strukturu je výchozí místo nastaveno tak jak je. Doctrine totiž neprochází jenom složku kterou jí zadáš ale i všechny její podsložky.
Já třeba vzhledem k modularitě systému nemám pouze jednu složku se všemy entitamy. Ale mám je roztroušené po celém projektu tak aby byly součástí celku kterého se týkají.
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#7 před 4 měsíci
- mbskot
- Člen

- Registrovaný: 7. 1. 2011
- Příspěvky: 59
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
@Patrik Votoček pri použití nového „Nette Framework
2.0-rc2 pro PHP 5.3“ treba zmeniť volanie funkcie v
Nella\Doctrine\Panel, riadok: 69
Connection::highlightSql($sql) --> Nette\Database\Helpers::dumpSql($sql)
Editoval mbskot (27. 1. 11:54)
#8 před 4 měsíci
- StiFF.cz
- Nový člen

- Registrovaný: 22. 9. 2011
- Příspěvky: 8
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Zkouším zprovoznit Doctrine2 na tomto sandboxu. Mám definované entity
i anotace na nich, ale stále mi to hlásí při pokusu o vytvoření
schématu tuto hlášku „No Metadata Classes To Process“. Přitom cesty
k entitám jsem si upravil podle své vlastní struktury.
Věděl by někdo, čím to může být?
EDIT: namespace :)
Editoval StiFF.cz (31. 1. 16:51)
#9 před 3 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#10 před 3 měsíci
- llook
- Člen

- Registrovaný: 17. 2. 2005
- Příspěvky: 114
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Edit: Tak už jsem na to přišel. Neinvaliduje se to samo, protože to
v CLI nerozpozná vývojový režim.
$configurator->isProductionMode() vrací true.
Přidal jsem si tedy do bootstrapu tohle:
if (PHP_SAPI == 'cli') {
$configurator->setProductionMode(false);
}
Editoval llook (11. 2. 14:58)
#11 před 3 měsíci
- Dalibor
- Člen

- Registrovaný: 24. 6. 2011
- Příspěvky: 29
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
kdyby někdo jako já zatuhnul na tom, že Console při zadání
php www/index.php help
nevypisuje volby pro ORM a další (orm:generate-proxies apod.), tak stačí volat bez help ;-)
php www/index.php
a já dvě hodiny hledám, proč se mi neregistrují extensions :-(
Patrik: díky za tento sandbox..
#12 před 3 měsíci
- bazo
- Nette guru

- Registrovaný: 28. 9. 2009
- Příspěvky: 303
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
za help treba napisat meno prikazu, zoznam prikazov sa zobrazi index.php list
#13 před 3 měsíci
- Dalibor
- Člen

- Registrovaný: 24. 6. 2011
- Příspěvky: 29
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
bazo napsal(a):
za help treba napisat meno prikazu, zoznam prikazov sa zobrazi index.php list
Jo, ale když napíšeš jen „php index.php help“ tak, jak to je v readme, tak ti vyjedou jen příkazy pro Symfony..
#14 před 3 měsíci
- Quinix
- Člen

- Registrovaný: 31. 3. 2009
- Příspěvky: 33
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
nakonfiguroval jsem si rozšíření podle návodu, ale když teď zkusím app spustit, dostanu:
Doctrine\Common\Annotations\AnnotationException
[Semantical Error] The annotation „@MappedSuperClass“ in class BaseEntity
was never imported. Did you maybe forget to add a „use“ statement for this
annotation
config.neon:
common:
parameters:
database:
driver: pdo_mysql
dbname: app
host: localhost
user: root
password:
charset: utf8
collation: utf8_czech_ci
doctrine:
connections:
default: %database%
entityManagers:
default:
entityDir: %appDir%
proxyDir: %tempDir%
proxyNamespace: Model\Proxies
connection: default
console:
entityManager: default
services:
console: @doctrine.console
entityManager: @doctrine.entityManagers.default
Předtím jsem na vytvoření entity managera používal:
<?php
public static function createEntityManager($doctrine) {
$config = new Configuration();
$config->setProxyDir($doctrine['proxyDir']);
$config->setProxyNamespace($doctrine['proxyNamespace']);
$metadataDriver = $config->newDefaultAnnotationDriver($doctrine['entityDir']);
$config->setMetadataDriverImpl($metadataDriver);
$cache = new ArrayCache();
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$eventManager = new EventManager();
$eventManager->addEventSubscriber(new CacheSubscriber());
// Vytvoření samotného EntityManageru
$entityManager = EntityManager::create((array) $doctrine['connection'], $config, $eventManager);
$config->setSQLLogger(Doctrine2Panel::getAndRegister($entityManager));
return $entityManager;
}
?>
Kde může být chyba?
#15 před 3 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Ve výchozím nastavení je tento sandbox nastaven na prefix Doctrine
anotací viz:
https://github.com/…els/User.php
Pokud chceš používat anotace bez prefixu mělo by stačit přidat:
common:
doctrine:
entityManagers:
default:
useAnnotationNamespace: true
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#16 před 3 měsíci
- Tomáš Kolinger
- Nový člen

- Registrovaný: 29. 2. 2012
- Příspěvky: 7
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Stáhnul jsem si sandbox ale bohužel nemůžu rozchodit CLI rozhraní. Jak jsem dohledal, tak se údaje z neonu neberou a jsou tam nastaveny na výchozí hodnoty (prázdné heslo, prázdné jméno, …). Výchozí připojení (doctrine.connections.default) se předá ale pole %database% se ignoruje, nevím proč.
Samotná aplikace přes HTTP funguje a na server se připojí.
Editoval Tomáš Kolinger (29. 2. 12:36)
#17 před 3 měsíci
- pilec
- Nette guru

- Registrovaný: 12. 11. 2009
- Příspěvky: 495
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
nemáš náhodou přístupové údaje k databázi v development/production? při přístupu přes konzoli se berou data ze sekce console
Nejčastější problémy: voláš parent::__construct()? Vymazal jsi cache?
#18 před 3 měsíci
- Tomáš Kolinger
- Nový člen

- Registrovaný: 29. 2. 2012
- Příspěvky: 7
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Dával jsem údaje přímo do „common“ sekce a zkusil jí importovat/podědit do „console“ (console < common) ale nepomohlo.
Editoval Tomáš Kolinger (29. 2. 17:24)
#19 před 3 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
od nette 2.0.x sekce „console“ neexistuje. Musíš „natvrdo“
definovat prostředí při $configurator->addConfig(...,
'production'); (jedná se o vlastnost Nette nikoliv tohoto pluginu).
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#20 před 3 měsíci
- knyttl
- Nette guru
- Registrovaný: 3. 4. 2010
- Příspěvky: 226
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Ahoj,
možná jsem trochu natvrdlej, ale kde a jak získáváš entityManager? :-) V tomhle příkladu, jak to běží celé v pozadí Usera, tak to úplně zřejmé není.
#21 před 2 měsíci
- Tomáš Kolinger
- Nový člen

- Registrovaný: 29. 2. 2012
- Příspěvky: 7
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Chybějící registrace existujících migrací (registerMigrationsFromDirectory()) u konfigurace pro migrace je úmyslná? Pracuji s migracemi poprvé, jak bez tohoto zaregistrování použiji vytvořenou migraci?
#22 před 2 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
@knyttl:
$container->doctrine->entityManager->default resp delam si
alias https://github.com/…/config.neon#L43 $container->database
@Tomáš Kolinger: bug opraveno
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#23 před 22 dny
- hapi
- Nový člen

- Registrovaný: 30. 4. 2012
- Příspěvky: 4
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Dobrý večer,
začínám s nette a doctrine 2, potřeboval bych globálně nastavit prefixy
tabulek.
V doctrine 2 to lze pomocí listeneru viz. dokumentace,
v dokumentaci nella
je informace o možnosti nastavení tagu doctrineListener.
Bohužel je to pro začátek relativně dost informací. Mohl by mi, prosím, někdo mi poradit, jak globální prefixy nejlépe nastavit?
Předem děkuji
Editoval hapi (30. 4. 23:46)
#24 před 22 dny
- Acnnair
- Člen

- Registrovaný: 29. 6. 2009
- Příspěvky: 32
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Myslím, že takéto niečo by mohlo fungovať (neskúšal som).
config.php
parameters:
tablePrefix: myprefix_
services:
doctrineTablePrefixListener:
class: DoctrineExtensions\TablePrefix
arguments: [%tablePrefix%]
tags: [doctrineListener]
S tým, že nezabudni nakopírovať triedu
DoctrineExtensions\TablePrefix niekam kde ti to tvoj
autoloader nájde.
Online
#25 před 21 dny
- hapi
- Nový člen

- Registrovaný: 30. 4. 2012
- Příspěvky: 4
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
to jsem si taky myslel, bohužel pokud zkusím vypsat
die(var_export($container->findByTag(‚doctrineListener‘), true));
v Nella\NetteAddons\Doctrine\Config\Extension::createEventManager
vrací se mi prázné pole…
#26 před 10 dny
- llook
- Člen

- Registrovaný: 17. 2. 2005
- Příspěvky: 114
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Ta třída musí implementovat \Doctrine\Common\EventSubscriber.
Když vezmeš ten příklad z dokumentace a takhle ho upravíš, tak by to
mělo fungovat:
namespace DoctrineExtensions;
use \Doctrine\ORM\Event\LoadClassMetadataEventArgs;
class TablePrefix implements EventSubscriber
{
protected $prefix = '';
public function __construct($prefix)
{
$this->prefix = (string) $prefix;
}
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
$classMetadata = $eventArgs->getClassMetadata();
$classMetadata->setTableName($this->prefix . $classMetadata->getTableName());
foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::MANY_TO_MANY) {
$mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
$classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName;
}
}
}
/**
*
* @return array
*/
public function getSubscribedEvents()
{
return array(\Doctrine\ORM\Events::loadClassMetadata);
}
}
Config:
services:
doctrineListener_identifiersEnvelope:
class: DoctrineExtensions\TablePrefix('haf_')
tags: [ doctrineListener ]
#27 před 10 dny
- hapi
- Nový člen

- Registrovaný: 30. 4. 2012
- Příspěvky: 4
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
diky za odpoved, ted mam jinou praci, ale az to vyzkousim, dam vedet :)
#28 před 8 dny
- hapi
- Nový člen

- Registrovaný: 30. 4. 2012
- Příspěvky: 4
Re: Doctrine 2 ORM & Migrations plugin a sandbox pro Nette 2.0 Beta 2 (s novým DIc)
Tak jsem se konecne dostal k tomu, to vyzkouset a funguje to skvele :)
v prikladu v dokumentaci doctrine neni implementovano rozhrani, to byl ten problem :)
Dekuju za rady