Stránka Nette & Doctrine
- Panda
- Člen | 569
Diskuse ke stránce Nette & Doctrine
Nebylo by lepší konfiguraci nastavovat místo přes
Environment::setVariable
vložit do config.ini
? Já
tam mám momentálně toto (adresářovou strukturu mám jinou):
[common.doctrine]
data_fixtures_path = %appDir%/data/fixtures
sql_path = %appDir%/data/sql
yaml_schema_path = %appDir%/schema
models_path = %appDir%/models
generate_models_options[generateTableClasses] = true
V doctrine-cli.php
pak objekt Doctrine_Cli
vytvářím takto:
$cli = new Doctrine_Cli((array) Environment::getConfig('doctrine'));
Na Windows také není potřeba nastavovat všechny PHP soubory jako
spustitelné a čachrovat s proměnnými prostředí, stačí si vytvořit
jednoduchou batku doctrine-cli.bat
:
@echo off
REM Cestu k PHP si pravděpodobně budete chtít změnit
C:\webserver\php\php.exe doctrine-cli.php %*
Mno a nakonec bych měl výhradu k profileru – neloguje některé dotazy. Upravil jsem si ho takto:
function fetchDoctrineEvents()
{
$profiler = Doctrine_Manager::getInstance()->getCurrentConnection()->getListener();
$queries = 0;
$time = 0;
$log = array(
$profiler->count() . ' Doctrine events',
''
);
/* @var $event Doctrine_Event */
foreach ($profiler as $event) {
$evName = $event->getName();
$out = '<strong>' . $evName . '</strong> [' . number_format($event->getElapsedSecs() * 1000, 3) . 'ms]';
$time += $event->getElapsedSecs();
if ($evName == 'exec' || $evName == 'execute' || $evName == 'query') {
++$queries;
$out .= "<br />\n" . $event->getQuery();
}
$params = $event->getParams();
if(!empty($params)) {
$out .= "<br />\n" . print_r($params, true);
}
$log[] = $out;
}
$log[0] .= ' [' . number_format($time * 1000, 3) . 'ms]';
$log[1] = $queries . ' sql queries';
return $log;
}
Jinak pěkný tutoriál!
- srigi
- Nette Blogger | 558
Jasnacka, kludne sa tie veci mozu prepisat, kedze su intuitivnejsie. Je to len prva verzia dokumentu, navrhy su vitane.
BTW ja som ten profiler obmedzi schvalne, lebo Doctrine na 40 sql requestov vygeneruje aj 200 eventov a developer je zahlteny dlhym zoznamom, kde nemoze najst co sa do DB posielalo.
Asociovanie .php suborov som robil podla PHP manualu, lebo cez .bat som na to nevedel prist.
Ja sa na tutorial mozem pozriet najskor cez vikend, ak je to kriticke, musi upravy urobit niekto iny.
- romansklenar
- Člen | 655
Majkl578 napsal(a):
Spíš než upgrade bych to viděl na nový článek (Doctrine 1 a 2 jsou poměrně zásadně odlišné verze, co se jsem se doslechl, dělám pouze s 2).
Tak když s ní děláš, nechtěl by jsi něco na toto téma sepsat?
- krissott
- Člen | 48
romansklenar napsal(a):
Majkl578 napsal(a):
Spíš než upgrade bych to viděl na nový článek (Doctrine 1 a 2 jsou poměrně zásadně odlišné verze, co se jsem se doslechl, dělám pouze s 2).
Tak když s ní děláš, nechtěl by jsi něco na toto téma sepsat?
Best practice, nebo aspon nejaky utrzek kodu, od tech, co pouzivaji doctrine 2, by se hodil.
- Panda
- Člen | 569
Podědíš Doctrine\Common\Cache\AbstractCache
, má to
5 abstraktních metod, z toho 4 z nich budou v podstatě jednořádkovky.
Jediný problém je metoda getIds()
, tam si buď budeš muset
trochu pohrát s iterováním v tempu, nebo si jejich seznam odkládat do
pomocného klíče (to dělalo Doctrine 1).
- Patrik Votoček
- Člen | 2221
bazo napsal(a):
Mna by hlavne zaujimalo ako riesit cachovanie pomocou nette cache ak nemam nainstalovane APC ani memcached
https://github.com/…ineCache.php
Pak tu mám ještě:
https://github.com/…seEntity.php
a
https://github.com/…ctrine2Panel
- Cifro
- Člen | 245
bazo napsal(a):
diky vrtak. ako je mozne rozsirit Environment, aby toto fungovalo?
Vrtak tam zrobil takú fintu… pôvodné Environment premenoval na
NEnvironment pomocou use Nette\Environrment as NEnvironment
a to getEntityManager()
dal do svojej triedy
Nella\Environment
.