Spojeni s databazi – „Catchable fatal error“

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

Proc mi nize uvedeny skript hazi tuto chybu:

Catchable fatal error: Argument 2 passed to Nette\Database\Context::__construct() must be an instance of Nette\Database\IStructure, none given

<?php
use Nette\Database\Connection;
use Nette\Database\Context;
use Nette\Database\Table;
require '../vendor/autoload.php';
$connection=new Connection('mysql:host=localhost;dbname=data','jmeno','heslo');
$db=new Context($connection);

(skript je v sandboxu v adresari www)

Diky

David Matějka
Moderator | 6445
+
0
-

Informace v doc o tom, jak vytvorit Context, jsou zastarale. Proc to potrebujes vytvaret rucne?

edoras
Člen | 21
+
0
-

Protoze nevim, jak se napojit na databazi nakonfigurovanou v config.local.neon z vlastniho php skriptu, umisteneho v www . Proto to napojeni delam rucne takto … v predesle verzi Nette mi to fungovalo.

Azathoth
Člen | 495
+
0
-

a proč potřebuješ mít php skript ve www? všechna logika, a připojení v databázi má být buď v presenterech nebo v modelu a pokud chceš něco vypsat, tak by to měl z DB vytáhnout presenter (přes model, pokud je to větší logika) a předat to do šablony jako proměnnou.

David Matějka
Moderator | 6445
+
+2
-

Pokud pouzivas „novy“ sandbox (novy v uvozovkach, protoze tak uz je to tam celkem dlouho), ktery ma v bootstrapu na konci return $container, tak je nejlepsi toto:

$container = require __DIR__ . "../app/bootstrap.php";
$db = $container->getByType("Nette\Database\Context");
edoras
Člen | 21
+
0
-

SUPER! To jsem presne potreboval.
Moc dekuju ;-)