Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Configurare il database

Come configurare un'installazione del framework PHP Symfony per accedere al database della nostra applicazione
Come configurare un'installazione del framework PHP Symfony per accedere al database della nostra applicazione
Link copiato negli appunti

Per accedere al database all’interno del nostro container dobbiamo innanzitutto configurare Symfony affinché sia in grado di connettersi correttamente. Se osserviamo la configurazione del nostro docker-compose.yml noteremo che il container del database è configurato come di seguito:

db:
    image: mysql:8.0.18
    container_name: kvak_db
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: kvak
      MYSQL_USER: kvak
      MYSQL_PASSWORD: kvak

Per poter accedere correttamente, quindi, il nostro hostname corrisponde al nome che abbiamo dato al container, ovvero kvak_db.

Prima di procedere oltre dobbiamo aggiungere una riga di configurazione al file appena visto, per evitare di incappare in problemi di connessione. A partire dalla versione 8 di MySQL, infatti, il plugin di autenticazione di default è auth_socket e dobbiamo ripristinare questa impostazione su mysql_native_password. Aggiungiamo, quindi, la seguente riga alla configurazione del database:

command: --default-authentication-plugin=mysql_native_password

e ricreiamo da zero i container con i comandi:

docker-compose down
docker-compose up -d

Accesso al database

Possiamo, ora, configurare Symfony per accedere al database. Apriamo il file app/.env e modifichiamo la riga relativa al DATABASE_URL da:

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7

in:

DATABASE_URL=mysql://kvak:kvak@kvak_db:3306/kvak

Stiamo usando una release di default di MySQL, non è quindi necessario specificare la versione. Per approfondimenti fare riferimento alla guida ufficiale di Doctrine.

In ambiente dev è sufficiente modificare la riga ma, per sicurezza, svuotiamo anche la cache. Dall’interno del container:

./bin/console cache:clear

A questo punto possiamo verificare che tutto funzioni correttamente. Un test veloce potrebbe essere quello di far girare una query qualsiasi all’interno di un controller. Apriamo il controller della home page app/src/Controller/HomeController.php ed inseriamo all’inizio della action il seguente codice:

$connection = $this->getDoctrine()->getConnection();  
dump($connection->getParams());
dump($connection->fetchColumn("SELECT 'test connessione' AS res"));

Apriamo la nostra home page assicurandoci di essere loggati e, se tutto è configurato correttamente, all’interno della tab dump della toolbar dovremmo vedere qualcosa simile al risultato descritto in Figura 1.

Test connessione a Doctrine

Figura 1. Test connessione a Doctrine

Troviamo la configurazione sul tag GIT setup-database-connection.

Ti consigliamo anche