Nette\Database vs. Dibi

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

Ahojte vsetci … viem ze od verzie 2.0 sa vyuziva Nette\Database … rozdiel je len v „krasopise“? alebo je nette\database lepsia ..... prip ked budem pouzivat Dibi nemal by som nic pokazit, nie?

Editoval Takeshi (11. 4. 2012 20:25)

ViPEr*CZ*
Člen | 818
+
0
-

Používejte co Vám vyhovuje… je to psané všude možně… prostě alternativy ;-)

Takeshi
Člen | 596
+
0
-

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
+
0
-

Takeshi se zeptal:
… viete ako nato?

nahraď za NEnvironment::getContext()->parameters['database']

Takeshi
Člen | 596
+
0
-

No tak toto mi nefunguje … tak sa zda ze verzia 2.0 vyraz NEnviroment nepozna … mas ine riesenie … :-)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Ú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)

Takeshi
Člen | 596
+
0
-

Pridal som to , ale nic sa nezmenilo, nevie mi nacitat databazu

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

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ů…?

Takeshi
Člen | 596
+
0
-

Jednoducho mi hadze vzpis „No database selected“ … dibi je pripojena

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Pozor, Nette\Database používá klíč dbname, zatímco dibi používá database. Zkontroluj si pole parametrů v configu.

Takeshi
Člen | 596
+
0
-

Dik za trpezlivost :-) Funguje

Northys
Člen | 29
+
0
-

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
+
0
-

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
+
0
-

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)