Skip to main content

Masa Brooding Ayam

Menambahkan custom connection in symfony 4 (multiple connection)

add ini service.yml
app.event.authentication_success_listener:
    class: App\EventListener\AuthenticationSuccessListener
    tags:
        - { name: kernel.event_listener, event: lexik_jwt_authentication.on_authentication_success, method: onAuthenticationSuccessResponse }
# abc def ghi# ------------app.date_normalizer:
    class: Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
    arguments:
        - { 'datetime_format': 'Y-m-d H:i:s' }

and create file
doctrine.yml
parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.    # This allows you to run cache:warmup even if your    # environment variables are not available yet.    # You should not need to change this value.    env(DATABASE_URL): ''
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver: 'pdo_sqlsrv'                server_version : '11.0'                url: '%env(resolve:DATABASE_URL)%'            odsdapodik:
                driver: 'pdo_sqlsrv'                server_version : '11.0'                url: '%env(resolve:DATABASE_URL_ODS)%'        #        schema_filter:  ~^(?!mst_)~    orm:
        auto_generate_proxy_classes: true
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'                prefix: 'App\Entity'                alias: App


selanjutnya buat file dan folder
namespace App\Doctrine\Connection;
buat file DynamicConnection.php

<?php
namespace App\Doctrine\Connection;
use Doctrine\DBAL\Connection;use Doctrine\DBAL\Driver;use Doctrine\DBAL\Event\ConnectionEventArgs;use Doctrine\DBAL\Events;use MyAwesome\Bundle\Services\DbSwitcher;
class DynamicConnection extends Connection{/** @var DbSwitcher */protected $dbSwitcher;
/*** @var bool*/private $_isConnected = false;
/*** The parameters used during creation of the Connection instance.** @var array*/private $_params = array();
/*** @param DbSwitcher $dbSwitcher*/public function setDbSwitcher(DbSwitcher $dbSwitcher){$this->dbSwitcher = $dbSwitcher;}
/*** @inheritDoc*/public function connect(){$container = $this->dbSwitcher->getContainer();
$connection = $container->get(sprintf('doctrine.dbal.sql.%s_connection', $this->dbSwitcher->getWorkingEntityManagerName()));
$this->_params = $connection->getParams();
if ($this->_isConnected) {return false;}
$driverOptions = isset($this->_params['driverOptions']) ?$this->_params['driverOptions'] : array();$user = isset($this->_params['user']) ? $this->_params['user'] : null;$password = isset($this->_params['password']) ?$this->_params['password'] : null;
$this->_conn = $this->_driver->connect($this->_params, $user, $password, $driverOptions);$this->_isConnected = true;
if (false === $this->isAutoCommit()) {$this->beginTransaction();}
if ($this->_eventManager->hasListeners(Events::postConnect)) {$eventArgs = new ConnectionEventArgs($this);$this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);}
return true;}
}

dan file  DynamicConnectionCompilerPass.php

<?phpnamespace App\Doctrine\DependencyInjection\CompilerPass;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;use Symfony\Component\DependencyInjection\ContainerBuilder;use Symfony\Component\DependencyInjection\Reference;
class DynamicConnectionCompilerPass implements CompilerPassInterface{    /**     * @inheritDoc     */    public function process(ContainerBuilder $container)    {        $container            ->getDefinition('doctrine.dbal.sql.dynamic_connection')            ->addMethodCall('setDbSwitcher', [                new Reference('myawesomebundle.dbswitcher')            ]);    }
}

selanjutnya cara pemakaian dengan raw sql =

$connOds = $this->managerRegistry->getConnection('odsdapodik');
$sql = "select top 1 * from ptk with(NOLOCK) where nik='".$varRequest->nik."'";$stmt = $connOds->prepare($sql);$stmt->execute();
selecsai
source : https://github.com/api-platform/api-platform/issues/556

Comments

Popular posts from this blog

Pengertian DataBase, MySQL dan phpMyAdmin

Pengertian DataBase, MySQL dan phpMyAdmin Pengertian DataBase DataBase adalah kumpulan informasi yang disusun berdasarkan cara tertentu dan merupakan suatu kesatuan yang utuh. Dengan sistem tersebut data yang terhimpun dalam suatu database dapat menghasilkan informasi yang berguna. Asal Mula Istilah Database Istilah “Database” berawal dari ilmu komputer. Meskipun kemudian artinya semakin luas, memasukkan hal-hal di luar bidang elektronika, postingan saya kali ini mengenai database komputer. Catatan yang mirip dengan database sebenarnya sudah ada sebelum revolusi industri yaitu dalam bentuk buku besar, kuitansi dan sekumpulan data yang berhubungan dengan bisnis. Konsep Dasar Database Konsep dasar dari database adalah kumpulan dari catatan-catatan, atau potongan dari pengetahuan. Sebuah database memiliki penjelasan terstruktur dari jenis fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema menggambarkan obyek yang diwakili suatu database, dan hubungan di antar...

Arti 18 Digit NIP (Nomor Identitas Pegawai Negeri Sipil) Yang Baru

Untuk DAPODIKPAUD credit :  Tarjo - Thomas NIP terdiri atas 18 (Delapan Belas) Digit contoh : 198503302003121002 8 Digit Pertama adalah Tahun, Bulan & Tanggal Lahir , pada NIP Contoh diatas 19850330 berarti Tahun 1985, Bulan 03 (Maret), Tanggal 30; 6 Digit berikutnya adalah Tahun & Bulan Pengangkatan CPNS  (Calon Pegawai Negeri Sipil), pada NIP Contoh diatas 200312 berarti diangkat sebagai CPNS pada tahun 2003, bulan 12 (desember); 1 Digit berikutnya adalah angka pengenal untuk menunjukkan Jenis kelamin  (angka 1 untuk Laki-laki, angka 2 untuk perempuan), pada NIP Contoh diatas 1 berati Jenis kelamin pemilik NIP tersebut adalah laki-laki; 3 Digit terakhir adalah angka pengenal yang menunjukkan Nomor Urut CPNS/PNS , Dikarenakan terdapat kemungkinan beberapa PNS memiliki Tahun, Bulan & Tanggal lahir yang sama, Tahun & Bulan Pengangkatan CPNS Sama juga, Serta Jenis Kelamin yang sama………….maka Nomor Urut tersebut diperlukan sebagai Angka Pengenal, dari conto...