Nette databaze vlastní query
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jiri.pudil
- Nette Blogger | 1032
To jde i přes standardní API Nette\Database, jen ty matematické operace nad sloupci musíš předávat jako SqlLiteral:
use Nette\Database\SqlLiteral;
(...)->where(array('id' => $id))->update(array(
'shots' => new SqlLiteral('shots+1'),
'points' => new SqlLiteral("points+$whatever"),
'successful' => new SqlLiteral('points/shots'),
));
Musíš si ovšem ošetřit $whatever
proti SQL injection.
Editoval jiri.pudil (11. 12. 2012 13:00)
- jiri.pudil
- Nette Blogger | 1032
Jde.
$db->query($sqlQuery); // $db instanceof Nette\Database\Connection
- enumag
- Člen | 2118
/** @var Nette\Database\Connection */
protected $connection;
public function injectConnection(Nette\Database\Connection $connection)
{
$this->connection = $connection;
}
Ale jedním dechem dodávám, že bys místo Connection měl injectovat raději nějaký model a to Connection používat až v něm.
PS: Používání contextu se v rámci možností raději vyhni. ;-)
Editoval enumag (12. 12. 2012 8:44)