Prefix tabulek (dibi) – návrh elegantního řešení

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

Jak řešíte prefix tabulek u připojení?

Nyní mám takovéto řešení:

BaseModel, který dědí od Nette\Object a pomocí __constructor mu předávám \Nette\DI\Container.

Obsauje tento kod, kde nastavuji prefix tabulky:

	/**
	 * @return \DibiConnection
	 */
	final public function getDb()
	{
		$this->context->dibi->connection->getSubstitutes()->{""} = $this->context->parameters["database"]["prefix"];

		return $this->context->dibi->connection;
	}

Neexistuje lepší řešení na nastavení prefixu? Nejlépe, kdyby se to dalo řešit už v config.neon.

Jak to řešíte vy?

nanuqcz
Člen | 822
+
0
-

Ahoj, v config.neon to vyřešit jde, ale ne pro prázdnou substituci.

common:
    database:
        driver: mysql
        host: localhost
        username: root
        password:
        database: test
        charset: utf8
        substitutes:
            prefix: foo_

    services:
        dibi:
            class: DibiConnection
            arguments: [%database%]
minzo
Člen | 23
+
0
-

Díky. Jinak zkusil jsem toto:

common:
    database:
        driver: mysql
        host: localhost
        username: root
        password:
        database: test
        charset: utf8
        substitutes:
            "": foo_

    services:
        dibi:
            class: DibiConnection
            arguments: [%database%]

A prázdná substituce normálně funguje.

nanuqcz
Člen | 822
+
0
-

Hezky, tak to jsem zas nevěděl já :-)