1. Go to this page and download the library: Download ray/aura-sql-module library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ray / aura-sql-module example snippets
use Ray\Di\AbstractModule;
use Ray\AuraSqlModule\AuraSqlModule;
use Ray\AuraSqlModule\AuraSqlQueryModule;
class AppModule extends AbstractModule
{
protected function configure()
{
$this->install(
new AuraSqlModule(
'mysql:host=localhost;dbname=test',
'username',
'password',
'slave1,slave2,slave3' // optional slave server list
$options, // optional key=>value array of driver-specific connection options
$queries // Queries to execute after the connection.
);
}
}
$this->install(
new AuraSqlEnvModule(
'PDO_DSN', // getenv('PDO_DSN')
'PDO_USER', // getenv('PDO_USER')
'PDO_PASSWORD', // getenv('PDO_PASSWORD')
'PDO_SLAVE' // getenv('PDO_SLAVE')
$options, // optional key=>value array of driver-specific connection options
$queries // Queries to execute after the connection.
);
use Ray\Di\AbstractModule;
use Ray\AuraSqlModule\AuraSqlModule;
use Ray\AuraSqlModule\Annotation\AuraSqlConfig;
use Aura\Sql\ConnectionLocator;
class AppModule extends AbstractModule
{
protected function configure()
{
$locator = new ConnectionLocator;
$locator->setWrite('master', new Connection('mysql:host=localhost;dbname=master', 'id', 'pass'));
$locator->setRead('slave1', new Connection('mysql:host=localhost;dbname=slave1', 'id', 'pass'));
$locator->setRead('slave2', new Connection('mysql:host=localhost;dbname=slave2', 'id', 'pass'));
$this->install(new AuraSqlReplicationModule($locator));
}
}
#[Inject]
public function setLoggerDb(#[Named('log_db') ExtendedPdoInterface $pdo)
{
// ...
}
class AppModule extends AbstractModule
{
protected function configure()
{
$this->install(new NamedPdoModule('log_db', 'mysql:host=localhost;dbname=log', 'username',
}
}
class AppModule extends AbstractModule
{
protected function configure()
{
$this->install(new NamedPdoEnvModule('log_db', 'LOG_DSN', 'LOG_USERNAME',
}
}
### with replication
You can set `$qaulifer` in 2nd parameter of AuraSqlReplicationModule.
use Ray\AuraSqlModule\Annotation\WriteConnection; // important
use Ray\AuraSqlModule\Annotation\Transactional; // important
class User
{
public $pdo;
#[WriteConnection, Transactional]
public function write()
{
// $this->pdo->rollback(); when exception thrown.
}
}
use Ray\AuraSqlModule\AuraSqlSelectInject;
clas Foo
{
use AuraSqlSelectInject;
public function bar()
{
/* @var $select \Aura\SqlQuery\Common\SelectInterface */
$this->select //
->distinct() // SELECT DISTINCT
->cols(array( // select these columns
'id', // column name
'name AS namecol', // one way of aliasing
'col_name' => 'col_alias', // another way of aliasing
'COUNT(foo) AS foo_count' // embed calculations directly
))
->from('foo AS f'); // FROM these tables
$sth = $this->pdo->prepare($this->select->getStatement());
// bind the values and execute
$sth->execute($this->select->getBindValues());
// get the results back as an associative array
$result = $sth->fetch(PDO::FETCH_ASSOC);
= $sth->fetch(PDO::FETCH_ASSOC);
use Ray\AuraSqlModule\AuraSqlPagerInject;
class Foo
{
use AuraSqlPagerInject;
publuc function bar()
{
// ...
$pager = $this->pagerFactory->newInstance($pdo, $sql, $params, 10, '/?page={page}&category=sports'); // 10 items per page
$page = $pager[2]; // page 2
use Ray\AuraSqlModule\Pagerfanta\AuraSqlQueryPagerInject;
class Foo
{
use AuraSqlQueryPagerInject;
publuc function bar()
{
// ...
$pager = $this->queryPagerFactory->newInstance($pdo, $select, 10, '/?page={page}&category=sports');
$page = $pager[2]; // page 2
use Pagerfanta\View\Template\TemplateInterface;
use Pagerfanta\View\Template\TwitterBootstrap3Template;
use Ray\AuraSqlModule\Annotation\PagerViewOption;
$this->bind(TemplateInterface::class)->to(TwitterBootstrap3Template::class);
$this->bind()->annotatedWith(PagerViewOption::class)->toInstance($pagerViewOption);
class DevModule extends AbstractModule
{
protected function configure()
{
// ...
$this->install(new AuraSqlProfileModule());
$this->bind(LoggerInterface::class)->toInstance(
/**
new class extends AbstractLogger {
/** @inheritDoc */
public function log($level, $message, array $context = [])
{
$replace = [];
foreach ($context as $key => $val) {
if (! is_array($val) && (! is_object($val) || method_exists($val, '__toString'))) {
$replace['{' . $key . '}'] = $val;
}
}
error_log(strtr($message, $replace));
}
}
);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.