Framework Symfony w standardzie używa Doctrine ORM do zarządzania bazami danych. Gdybyśmy chcieli skomunikować się z bazą danych na zdalnym serwerze to model ORM może okazać się zbędny. Wtedy możemy skorzystać z biblioteki DBAL, która pozwala na pisanie zapytań SQL niezależnie od warstwy ORM.
Przykład
Ustaw w pliku .env dane do połączenia ze zdalnym serwerem bazy:
1 |
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name |
Aby w kontrolerze użyć DBAL dołączamy klasę Connection:
1 |
use Doctrine\DBAL\Driver\Connection; |
Przykład kontrolera z zapytaniem do bazy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use Doctrine\DBAL\Driver\Connection; class TestDbalController extends AbstractController { /** * @Route("/test-dbal", name="test_dbal") */ public function index(Connection $connection) { $dbc = $connection->fetchAssoc( "SELECT * FROM table" ); print_r($dbc); // ... |
Zewnętrzny serwer bazy może blokować połączenie z obcego adresu IP. W takiej sytuacji należy dodać go do puli zaufanych adresów (białej listy). Zazwyczaj taka opcja jest dostępna w panelu administracyjnym hostingu (np.: w DirectAdmin) a jeśli nie to pozostaje kontakt z administratorem.
Obrazek wyróżniający do posta: WilliamsCreativity