Here you have a easy way to connect to database .. Thanks to Oli help
Notice: This thread is very old.
- alnux
- Member | 139
Here you have a way to connect to database
setTables.php
/**
* Set tables in just one place
*
* @author Copyright (c) 2014 Leonardo D. A. Allende Pastén (alnux)
*/
namespace App\Model;
use \Nette\Object;
/**
* Set tables
*/
class SetTables extends Object
{
// Set a const table in this case paises
const T_PAISES = 'paises';
}
BaseModel.php Model class
/**
* @author Copyright (c) 2014 Leonardo D. A. Allende Pastén (alnux)
*/
namespace App\Model;
use \Nette\Database\Context;
use App\Model\AjustarTablas;
/**
* Base Model.
*/
class BaseModel extends SetTables {
private $context;
protected $table;
/**
* Get dataBase Connection
*
* @param Nette\Database\Context $database connection object var to database
*/
public function __construct(Context $context)
{
$this->context = $context;
}
/**
* Return all items
*
* @return Nette\Database\Table\Selection
*/
public function all()
{
return $this->context->table($this->table);
}
Paises.php Model class
/**
* @author Copyright (c) 2014 Leonardo D. A. Allende Pastén (alnux)
*/
namespace App\Model;
use App\Model\BaseModel;
/**
* Clase Modelo Paises.
*/
class Paises extends BaseModel {
protected $table = AjustarTablas::T_PAISES;
}
The next class connect database to presenters
/**
* @author Copyright (c) 2014 Leonardo D. A. Allende Pastén (alnux)
*/
namespace App\Model;
use \Nette\DI\Container,\Nette\Database\Context;
use App\Model\Paises;
/**
* Models container
*/
class ModeloContenedor
{
private $context;
function __construct(\Nette\Database\Context $db)
{
$this->context = $db;
}
public function getPaises()
{
return new Paises($this->context);
}
}
and finally config.neon configuration
.
.
.
.
services:
modeloContenedor: App\Model\ModeloContenedor
From presnter you get it using @inject annotation on a public member
variable more info here
, please put attention on
/** @inject @var \App\Model\ModeloContenedor */ before var with
out this does not will work
namespace App\Presenters;
use Nette,
App\Model\ModeloContenedor;
/**
* Homepage presenter.
*/
class HomepagePresenter extends BasePresenter
{
/** @inject @var \App\Model\ModeloContenedor */
public $modeloContenedor;
public function renderDefault()
{
$paises = $this->modeloContenedor->getPaises();
$this->template->paises = $paises->all();
}
}
Last edited by alnux (2014-06-13 17:11)