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...

Contoh aplikasi konversi Suhu java console (cmd) If Else

Contoh aplikasi konversi Suhu java console (cmd) If Else package tugas; import java.util.Scanner; public class KonversiSuhu { public static void main (String[] args){ int menu; double Suhuawal, Suhu; System.out.println("Aplikasi Konversi Suhu"); System.out.println("Menu Aplikasi"); System.out.println("[1] Dari Celcius ke Reamur"); System.out.println("[2] Dari Celcius ke Farenheit"); System.out.println("[3] Dari Reamur ke Celcius"); System.out.println("[4] Dari Reamur ke Farenheit"); System.out.println("[5] Dari Farenheit ke Celcius"); System.out.println("[6] Dari Farenheit ke Reamur"); System.out.print("Masukan Kode menu : "); Scanner Scanner = new Scanner(System.in); menu = Scanner.nextInt(); if(menu == 1){ System.out.println("Konversi Dari Celcius ke Reamur"); System.out.print("Inputkan Nilai Suhu Celcius: "); Suhuawal = Sca...