ACC SHELL
<?php
/**
* Reprezentuje repozitář pro databázovou tabulku
*/
abstract class Table extends Nette\Object
{
/**
* @var Nette\Database\Connection
*/
protected $connection;
protected $tableName;
/**
* @param $tableName
* @param Nette\Database\Connection $db
*/
public function __construct($tableName, Nette\Database\Connection $db)
{
$this->tableName = $tableName;
$this->connection = $db;
}
/**
* Vrací celou tabulku z databáze
* @return \Nette\Database\Table\Selection
*/
protected function getTable()
{
return $this->connection->table($this->tableName);
}
/**
* Vrací všechny záznamy z databáze
* @return \Nette\Database\Table\Selection
*/
public function findAll()
{
return $this->getTable();
}
/**
* Vrací vyfiltrované záznamy na základě vstupního pole
* (pole array('name' => 'David') se převede na část SQL dotazu WHERE name = 'David')
* @param array $by
* @return \Nette\Database\Table\Selection
*/
public function findBy(array $by)
{
return $this->getTable()->where($by);
}
/**
* To samé jako findBy akorát vrací vždy jen jeden záznam
* @param array $by
* @return \Nette\Database\Table\ActiveRow|FALSE
*/
public function findOneBy(array $by)
{
return $this->findBy($by)->limit(1)->fetch();
}
/**
* Vrací záznam s daným primárním klíčem
* @param int $id
* @return \Nette\Database\Table\ActiveRow|FALSE
*/
public function find($id)
{
return $this->findOneBy(array('id' => $id));
}
}
ACC SHELL 2018