Prosím o otestování Nette Database 4.0 RC
- David Grudl
- Nette Core | 8199
Prosím o otestování nové velké verze Nette Database 4.0 RC
composer require nette/database:^4.0.0-dev
Nová verze představuje především velkou architektonickou změnu. Není už pevně spojená s PDO. A je možné doplnit drivery pro další databázové rozšíření v PHP. Například mysqli, které přinese možnost spouštět dotazy paralelně, což může být hodně zajímavé.
Další novinkou je spojení tříd Nette\Database\Connection
a
Explorer
do jedné. Ono to tak kdysi v NDB bylo a myslím, že je
dobré se k tomuto konceptu vrátit. Názvy těchto tříd jsou nyní
aliasy.
Novinkou je možnost konfigurovat, jak se převádí hodnoty načtené z databáze, a to pomocí
database:
dsn: ...
options:
convertBoolean: true # MySQL tinyint(1) / BIT v SQLServer převádí na boolean
convertDateTime: true # zda převádět data na objekty DateTime
convertDecimal: true # zda převádet na int/float nebo ponechat string
newDateTime: true # používá Nette\Database\DateTime místo Nette\Utils\DateTime
Všechny tyto volby jsou zapnuté by default, stejně jako volba newDateTime
.
Změny:
- Metoda
getInsertId()
nyní vrací integery místo řetězců - Metoda
DriverException::getCode()
vrací číselný driver-specific kód místo řetězce SQLstate - Z kódu jsem dal pryč rozhraní
IRow
aIRowContainer
, které imho k ničemu užitečnému nebyly - Deprecated jsou metody poplatné čistě PDO:
Connection::getPdo()
,getDsn()
Mám připravených pár bombastických novinek, které vyžadují novou architekturu Nette Database 4.0
A ačkoliv je nová verze pod kapotou kompletně předělaná, snažil jsem se, aby nezpůsobovala žádné nekompatibility. Na svých projektech jsem nepotřeboval cokoliv upravovat. Tak prosím ověřte, jestli na nějaké nekompatibility nenarazíte, ať je můžeme vychytat.
Je to někdo, kdo si vytvářel pro NDB vlastní databázový driver?
- kminekmatej
- Generous Backer | 37
Ahoj,
já mám ve svém projektu definován přístup ke dvěma databázím a po
přepnutí na DB4 mi nejde vybuildit container. Error log: https://cloud.kminet.eu/…9TmJDBpRMKjD . Config db
vypadá takto:
database:
default:
dsn: 'mysql:host=localhost;dbname=admin.boost.space'
user: dbuser
password: 'dbpwd'
b:
dsn: 'mysql:host=localhost;dbname=boost.space'
user: dbuser
password: 'dbpwd'
reflection: conventional
- ViPEr*CZ*
- Člen | 817
Zkousim na jedne mensi appce.
Dostavam se na
Argument #1 ($dateTime) must be of type Nette\Utils\DateTime, Nette\Database\DateTime
Coz jsem teda vyresil asi na dvou mistech. Asi muze byt opruz kdyz to je na
vice mistech.
Ale melo by to jit resit strojove.
Jen jsem to chtel rovnou checknout na PHP 8.4 a koukam, ze mame
za-lockovano
nette/routing v3.1.0 requires php 8.1 – 8.3 → your php version
(8.4.0beta4) does not satisfy that requirement
Na 8.3.11 to frci :-)