Nette\Database vs. Dibi
- Takeshi
- Člen | 596
Mne osobne, aj ked je o nieco zlozitejsia vyhovuje Dibi, ale od verzie 2.0 som zacal pouzivat nette\database, pretoze som nevedel ako propijit Dibi pomocou konfiguracneho suboru …
vo verzii 0.9.7
v config.ini sa pridali potrebne udaje a v bootstrapu sa len pridal riadok
<?php
dibi::connect(NEnvironment::getConfig('database'));
?>
a mohol som dibi naplno pouzivat ..
… viete ako nato?
Editoval Takeshi (11. 4. 2012 20:39)
- Vojtěch Dobeš
- Gold Partner | 1316
Takeshi se zeptal:
… viete ako nato?
nahraď za
NEnvironment::getContext()->parameters['database']
- Vojtěch Dobeš
- Gold Partner | 1316
V boostrapu po volání createContainer()
zavolat
dibi::connect($container->parameters['database']);
. Nicméně
dávám řešení aniž bych viděl řádek tvého konfiguračního souboru,
bootstrapu atd. …
- nanuqcz
- Člen | 822
Ahoj, sice je to trochu mimo téma, ale dibi se dá v Nette 2 připojit
takto, jen pomocí config.neon
:
common:
database:
driver: mysql
host: localhost
username: root
password:
database: test
charset: utf8
# nejsem si jistý, jestli bude profiler fungovat
profiler: TRUE
services:
dibi: DibiConnection(%database%)
V presenteru se pak k dibi dostaneš takto:
$this->getService('dibi')
// nebo
$this->context->dibi;
Editoval nanuqcz (11. 4. 2012 22:06)
- Takeshi
- Člen | 596
To co si mi napisal, funguje, no velmi ma mrzi ze ta este otravujem ale pise mi, ze nie je vybrata databaza … moj config.neon …=>
<?php
#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
#
common:
parameters:
database:
driver: mysql
host: localhost
dbname: database
user: root
password:
php:
date.timezone: Europe/Prague
# session.save_path: "%tempDir%/sessions"
# zlib.output_compression: yes
nette:
session:
autoStart: smart
database:
default:
dsn: '%database.driver%:host=%database.host%;dbname=%database.dbname%'
user: %database.user%
password: %database.password%
services:
database: @Nette\Database\Connection
authenticator: Authenticator( @database::table(users) )
factories:
production < common:
development < common:
?>
- Vojtěch Dobeš
- Gold Partner | 1316
Úplně nejlepší je zaregistrovat si dibi jako extension (v bootstrapu):
$configurator->onCompile['dibi'] = function ($configurator, Nette\Config\Compiler $compiler) {
$compiler->addExtension('dibi', new DibiNetteExtension);
};
Funguje s nejnovější verzí dibi.
Služba je pak přístupná jako
$context->dibi->connection
. V konfiguraci se údaje pro dibi
neuvádí v sekci parameters
, ale v sekci dibi
na
stejné úrovni, jako jsou services
a parameters
.
Editoval vojtech.dobes (11. 4. 2012 22:12)
- Vojtěch Dobeš
- Gold Partner | 1316
Upřímně, netuším co znamená: „nevie mi nacitat databazu“. Mužíček vylezl z obrazovky a naškrábal to zelenou křídou na tabuli křečovitě sevřenou v ruce? Vyjímky, zprávy, řádky konkrétních souborů…?
- Vojtěch Dobeš
- Gold Partner | 1316
Pozor, Nette\Database
používá klíč dbname
,
zatímco dibi
používá database
. Zkontroluj si pole
parametrů v configu.
- Northys
- Člen | 29
Ahoj,
vím, že je to už rok staré téma, ale snad ještě někdo odpoví. Mám
stejný problém jako Takeshi
common:
parameters:
driver: mysqli
host: localhost
username: root
password:
database: luxium
charset: utf8
profiler: TRUE
takové mám nastavení – tedy správně database místo dbname a pořád
mi to píše
DibiDriverException #1046 – No database selected
nevíte někdo co s tím prosím? :\
EDIT:
dělal jsem to podle https://doc.nette.org/cs/database a
kdysi mi to už fungovalo, ale to byla ještě stará verze dibi – teďka
někdy vyšla nová verze, není možné, že je to tím?
Editoval Northys (1. 8. 2013 20:59)
- japlavaren
- Člen | 404
citaj dalej, staci nasledujuci kod:
bootsrrap.php
<?php
$configurator->onCompile[] = function ($configurator, $compiler) {
$compiler->addExtension('dibi', new DibiNetteExtension);
};
?>
config.neon
common:
dibi:
host: localhost
username: root
password: ***
database: foo
lazy: TRUE
- Šaman
- Člen | 2666
Pozor, aktuální Dibi má dvě extension, jedna pro nette 2.0 a jedna pro 2.1 (ta se nemusí registrovat v bootstrapu, ale jen v configu.)
Takže nově takto pěkně:
extensions:
dibi: DibiNette21Extension
dibi:
host: localhost
username: foo
password: xxx
database: bar
lazy: true
Editoval Šaman (1. 8. 2013 21:40)