Problém se spojení s databází Nette\Database\Connection

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

Zdravím,
mám problém, ze kterého jsem zoufalí.. řeším to už půl dne, přiom je to triviální…

Nemůžu se asi spojit s databází na wedosu

Mám základní repositář kde vytvářím připojení Repository.php:

<?php
namespace App\Model;

use Nette;

abstract class Repository extends \Nette\Object {

    /** @var Nette\Database\Context */
    protected $dbase;

    public function __construct(Nette\Database\Context $dbase) {
        $this->dbase = $dbase;

    }

    public function getTable( ) {
        return $this->dbase->table( 'articles' );
    }

}
?>

Call to a member function table() on a non-object

config.neon vypadá:

<?php
parameters:

php:
	date.timezone: Europe/Prague


application:
	errorPresenter: Error
	mapping:
		*: App\*Module\Presenters\*Presenter

session:
	expiration: 14 days

services:

	router: App\RouterFactory::createRouter

	#komponenty
	- \komponent\IArticleListFactory

	#Repositare
	- App\Model\ArticlesRepository
?>

Žádná složitost :(

a nakonec config.local.neon v sobě má:

<?php
parameters:

database:
	dsn: 'mysql:host=wm98.wedos.net;dbname=d29551_newlex'
	user: user
	password: *****
	options:
		lazy: yes

?>

Jméno, heslo, host všechno sedí, to mám je potvrzeno, zkoušel jsem i jiné, funkční a porad nic…

Víc věcí co se týče spojení s DB tam nemám, přitom v jiné verzi Nette mi to krásně šlape, ale tam byla deklarace spojení s DB ještě v config.neon, nevím jestli se něco zásadně změnilo v novém Nette, nebo co dělám špatně… Poraďte mi, nebo si vytrhám všechny vlasy :D

F.Vesely
Člen | 369
+
+2
-

A jak vypada konstruktor ArticlesRepository? Volas v nem parent::__construct($dbase);?

Pavel Kravčík
Člen | 1196
+
+2
-

Ještě otázka, nezkoušíš to z lokálu? Wedos nedovolí připojení z jiných míst, než z Wedosu myslím.

kreed
Člen | 13
+
0
-

Tek jeste jednou:
Repository.php

<?php
namespace App\Model;

use Nette;

abstract class Repository extends \Nette\Object {

    /** @var Nette\Database\Context */
    protected $dbase;

    public function __construct(Nette\Database\Context $dbase) {
        $this->dbase = $dbase;

    }

    public function getTable( $table ) {
        return $this->dbase->table( $table );
    }

}
?>

NA to je nalepen BaseArticlesRepository.php:

<?php
abstract class BaseArticlesRepository extends Repository {

    protected $table = 'articles';

    public function __construct() {
        parent::__construct();

    }

        public function getTable( $table = null) {
        if( $table ) {
            parent::getTable($table);

        }
            parent::getTable($this->table);
        }
}
?>

a pak Konstruktor ArticlesRepository vypada nasledovne:

<?php
	class ArticlesRepository extends BaseArticlesRepository {

    public function __construct() {
        parent::__construct();
    }

    public function getArticleList( ) {
        return $this->getTable();
    }

}
?>
kreed
Člen | 13
+
0
-

Pavel Kravčík napsal(a):

Ještě otázka, nezkoušíš to z lokálu? Wedos nedovolí připojení z jiných míst, než z Wedosu myslím.

Jo a nee… nedelam to z lokalu, delam to primo na FTP wedos, taakze na povolenem serveru… Vse je pod jednim hostingem, tzn, jak databaze tak uloziste aplikace, takze by to melo jit

Oli
Člen | 1215
+
+1
-

@kreed však ti o tý chybě už říkal @F.Vesely

A jak vypada konstruktor ArticlesRepository? Volas v nem parent::__construct($dbase);?

Ty musíš jako service do configu uložit ten poslední prvek s kterým prcuješ, tedy ArticleRepository a předat mu jako závislost Context a ten Context ti potom musí probublat až do Repository. Takže budeš mít tohle v ArticleRepository i BaseArticleRepository

public function __construct(Nette\Database\Context $dbase) {
    parent::__construct($dbase);
}
CZechBoY
Člen | 3608
+
+1
-

Nebo ten konstruktor vynecháš a zavola se přímo predek sám.

kreed
Člen | 13
+
0
-

AAAAAno… mohly za to ty konstruktory… Už to jede, slava :) … Stačilo smazat konstruktory a nechat jen ve výchozím Repositary.php se spojením s DB a jede jako po másle… Díky všem za ochotu, navedli jste mě na správnou cestu… Vlasy mi začínají zase dorůstat :) … pekny Vánoce a šťastný nový rok Vám všem …