symfony 6 problema connessione database

13 views
Skip to first unread message

Enrico Maria Chellini

unread,
Jan 19, 2023, 6:43:01 AMJan 19
to

ho un [@zz0 di errore di connessione al database da cui non riesco a
venirne fuori :

premesso che ho seguito paro paro :
https://symfony.com/doc/current/doctrine.html

#symfony console doctrine:database:create
Could not create database `MIODATABASE` for connection named default
An exception occurred in the driver: SQLSTATE[HY000] [2002] Connection refused

Qualche idea?

Enrico





Bramante

unread,
Jan 19, 2023, 6:55:36 AMJan 19
to
Il 19/01/23 12:42, Enrico Maria Chellini ha scritto:
i parametri di connesione al db sono corretti?

quale DBMS stai utilizzando?

il problema che hai è che non riesce ad autenticarsi al db.

tramite un qualsiasi client riesci ad accedere al db?

Enrico Maria Chellini

unread,
Jan 19, 2023, 7:13:01 AMJan 19
to

> >
> >
> >
> i parametri di connesione al db sono corretti?
su .env si

> quale DBMS stai utilizzando?
>
> il problema che hai è che non riesce ad autenticarsi al db.
>
> tramite un qualsiasi client riesci ad accedere al db?

ORM mariadb

nessun problema di connessione con phpmayadmin, CMS, etc.

Enrico

Bramante

unread,
Jan 19, 2023, 8:06:29 AMJan 19
to
Il 19/01/23 13:12, Enrico Maria Chellini ha scritto:
ok

l'utenza ha le grant per fare operazioni di DML?
l'utenza ha le grant per connettersi da remoto?





Enrico Maria Chellini

unread,
Jan 19, 2023, 8:19:30 AMJan 19
to

>
> l'utenza ha le grant per fare operazioni di DML?
si

> l'utenza ha le grant per connettersi da remoto?
>

non è in remoto è in locale, è per un progetto in sviluppo.
comunque no, ho ho dato permessi a mariadb di connettersi fuori da
localhost

Enrico

Bramante

unread,
Jan 19, 2023, 8:38:29 AMJan 19
to
Il 19/01/23 14:19, Enrico Maria Chellini ha scritto:
ti chiedevo dei permessi da remoto in quanto se sympony non è installato
nella stessa macchina di mariadb , è normale che non ti funzionava

hai provato con il client mysql da riga di comando se funziona?

mysql -h host -u user -p password
una volta dentro
create database miodatabase;

altra cosa è verifica bene i paramentri inseriti in sympony

PS
stai utilizzando docker o simili?

Bramante

unread,
Jan 19, 2023, 8:41:38 AMJan 19
to
Il 19/01/23 14:19, Enrico Maria Chellini ha scritto:
verifica anche i log di mariadb cosa dicono

Enrico Maria Chellini

unread,
Jan 19, 2023, 9:56:33 AMJan 19
to

>verifica anche i log di mariadb cosa dicono

No log mariadb, sono su mageia che ha una configurazione tutta sua;
ho chiesto sul forum come abilitarli.

mi sa che facci prima a cambiar macchina; ho una debian che ho montato
per sviluppo

>
> hai provato con il client mysql da riga di comando se funziona?
>
> mysql -h host -u user -p password

si mi logo correttamente

> una volta dentro
> create database miodatabase;

si tutto ok.

> altra cosa è verifica bene i paramentri inseriti in sympony

fatto .

> PS
> stai utilizzando docker o simili?
>
No.




Bramante

unread,
Jan 19, 2023, 10:15:51 AMJan 19
to
Il 19/01/23 15:56, Enrico Maria Chellini ha scritto:
se stavi seguendo paro paro la guida

Configuring the Database

The database connection information is stored as an environment variable
called DATABASE_URL. For development, you can find and customize this
inside .env:

# .env (or override DATABASE_URL in .env.local to avoid committing your
changes)

# customize this line!
DATABASE_URL="mysql://db_user:db_pa...@127.0.0.1:3306/db_name?serverVersion=5.7"

# to use mariadb:
DATABASE_URL="mysql://db_user:db_pa...@127.0.0.1:3306/db_name?serverVersion=mariadb-10.5.8"

# to use sqlite:
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/app.db"

# to use postgresql:
#
DATABASE_URL="postgresql://db_user:db_pa...@127.0.0.1:5432/db_name?serverVersion=11&charset=utf8"

# to use oracle:
# DATABASE_URL="oci8://db_user:db_pa...@127.0.0.1:1521/db_name"


ci sono 2 righe scommentate


# customize this line!
DATABASE_URL="mysql://db_user:db_pa...@127.0.0.1:3306/db_name?serverVersion=5.7"

# to use mariadb:
DATABASE_URL="mysql://db_user:db_pa...@127.0.0.1:3306/db_name?serverVersion=mariadb-10.5.8"


ce ne dovrebbe essere SOLO UNA, può essere che le hai lasciate entrambe
ma hai modificato con i tuoi parametri solo la prima riga?



Enrico Maria Chellini

unread,
Jan 19, 2023, 10:27:07 AMJan 19
to

> # to use mariadb:
> DATABASE_URL="mysql://db_user:db_pa...@127.0.0.1:3306/db_name?serverVersion=mariadb-10.5.8"
>
>
> ce ne dovrebbe essere SOLO UNA, può essere che le hai lasciate
> entrambe ma hai modificato con i tuoi parametri solo la prima riga?

no no, messo solo una riga, ho modificato quella del file .env
presente, ovviamente ho messo la mia versione di mariadb,

provo su debian

Enrico




Enrico Maria Chellini

unread,
Jan 19, 2023, 10:44:12 AMJan 19
to
Il giorno Thu, 19 Jan 2023 16:15:49 +0100
Bramante <br...@yopmail.com> ha scritto:


l'unico dubbio ce l'ho su questa riga

MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0

forse default va cambiato?

il log dice :
Could not create database `MIODATABASE` for connection named default

enrico


Enrico Maria Chellini

unread,
Jan 19, 2023, 10:49:04 AMJan 19
to
Il giorno Thu, 19 Jan 2023 16:44:10 +0100
Enrico Maria Chellini <bi...@bitit.it> ha scritto:

> Il giorno Thu, 19 Jan 2023 16:15:49 +0100
> Bramante <br...@yopmail.com> ha scritto:
>
>
> l'unico dubbio ce l'ho su questa riga
>
> MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
>
> forse default va cambiato?
>

niente, sempre:

CONSOL Command "doctrine:database:create" exited with code "1" code=1
command="doctrine:database:create"

Bramante

unread,
Jan 19, 2023, 11:42:57 AMJan 19
to
Il 19/01/23 16:49, Enrico Maria Chellini ha scritto:
a rigor di logica mi fa pensare ad un errore di paramatri di
configurazione per l'accesso al db

non utilizzo orm in genere, li trovi moooolto limitati (per chi conosce
SQL) e aggiungono complessità inutile
oltre che dannosi

pensare di "mappare" dati e istruzioni sql come se fosse una classe con
metodi e proprietà è dannoso per chi con i dati ci lavora.

te lo dico in primis da sviluppatore e dba in seconda battuta.

tornando al tuo errore, cercherei comunque nel setup della
configurazione, penso che non legga o viene sovrascritta la tua
configurazione a runtime




Enrico Maria Chellini

unread,
Jan 19, 2023, 12:17:16 PMJan 19
to

> > a rigor di logica mi fa pensare ad un errore di paramatri di
> configurazione per l'accesso al db

sembrerebbe un drive che non fa il suo lavoro; non so se è mageia che
si mette di traverso.

adesso stavo tentando di installarla su debian , in un virtual server.
che si mette di traverso pure lui; come utente normale e come root
riesco a richiamare sia composer che synfony, come utente
"virtualserveruser" no.

Ovviamente eviterei di installare come root, e come utente enrico non
avrei gli accessi per entrare nel virtual server, giustamente.
Potrei installare softacolus, ma preferisco trovare la strada a manina.
smanetto un po', in attesa qualcuno mi dica come tirar fuori i log sql
da mageia.

> non utilizzo orm in genere, li trovi moooolto limitati (per chi
> conosce SQL) e aggiungono complessità inutile
> oltre che dannosi
>
> pensare di "mappare" dati e istruzioni sql come se fosse una classe
> con metodi e proprietà è dannoso per chi con i dati ci lavora.
>
> te lo dico in primis da sviluppatore e dba in seconda battuta.

Ok si impara sempre qualcosa, che consiglieresti?

Enrico

Bramante

unread,
Jan 19, 2023, 12:51:50 PMJan 19
to
Il 19/01/23 18:17, Enrico Maria Chellini ha scritto:
di imparare seriamente SQL e utilizzare PDO come driver per php


per farti capire un orm non è in grado o diventa molto più complicato
farlo con un orm che scrivere.


select distinct x.id,
concat(x.nome, x.cognome) as nominativo,
d.indirizzo,
'MANAGMENT' as posizione
count(bonus) as bonus
from utente_a x,
(select *
from indirizzo
where data_indirizzo = (select max(data_recapito)
from indirizzo
where cap like '001%'
and id_utente = x.id_utente)) d
where x.posizione in ('DIRIGENTE', 'QUADRO', 'FUNZIONARIO')
group by x.nome, x.cognome, d.indirizzo
having count(bonus) > 1000;

questa query è inventata ma penso che funzioni
in pratica estrae

id, nome e cognome e l'ultimo indirizzo di recapito delle persone con un
bonus maggiore di 1000 che hanno una funzione da management
(funzionario, quadro o dirigente) e che risiedono a roma (001xx come cap)




Bramante

unread,
Jan 19, 2023, 12:54:47 PMJan 19
to
Il 19/01/23 18:51, Bramante ha scritto:
and d.id_utente = x.id_utente) d

Enrico Maria Chellini

unread,
Jan 19, 2023, 1:48:48 PMJan 19
to
> di imparare seriamente SQL e utilizzare PDO come driver per php

Solitamente scrivo tutto a manina pdp sql;
tipo
https://www.mare-immobiliare.com/
https://www.bitbar.it/

ritengo si inutile, come dicono anche loro, per progetti piccoli
scomodare un framework.

con synfony ho fatto un po' di cose una vita fa, adesso è cambiato un
bel po';

adesso ho da sviluppare un progetto multiutenza, non voglio svilupparlo
in un server remoto ma qui in locale, perchè mi richiederà un bel po' di
tempo, come distro desktop mageia l'adoro, ma ogni qualvolta cerchi di
installare qualcosa di più complesso devi moccolare non poco, o passare
a debian, o derivate redhat.


> per farti capire un orm non è in grado o diventa molto più complicato
> farlo con un orm che scrivere.
> questa query è inventata ma penso che funzioni
> in pratica estrae
>
> id, nome e cognome e l'ultimo indirizzo di recapito delle persone con
> un bonus maggiore di 1000 che hanno una funzione da management
> (funzionario, quadro o dirigente) e che risiedono a roma (001xx come
> cap)

ok ma per la connessione di cosa ho bisogno?

le query le scrivi nel controller?

enrico



Enrico Maria Chellini

unread,
Jan 19, 2023, 1:51:43 PMJan 19
to

> ok ma per la connessione di cosa ho bisogno?
>
> le query le scrivi nel controller?
>

hai qualche link da leggermi?
Enrico

Enrico Maria Chellini

unread,
Jan 19, 2023, 2:42:52 PMJan 19
to

non usi gli oggetti Criteria ?

Enrico

Bramante

unread,
Jan 20, 2023, 4:01:36 AMJan 20
to
Il 19/01/23 19:48, Enrico Maria Chellini ha scritto:
i progetti li ho sempre basati su pattern MVC (piccoli o grandi
progetti, non fa differenza, dal servizio rest API, alla paginetta dei
contatti di un sitarello)

quindi la parte di business logic è demandata al Model, nel controller
non faccio altro che ricevere l'input, fare i classici controlli formali
e logici e poi chiamo un primo model che si occupa della business logic,
se ho bisogno di accedere ai dati o scrivere su file, chiamare servizi
esterni ecc, chiamo i relativi model specifici di quella singola azione.

ritorno il tutto al controller che si occuperà di scegliere la view
corretta, che può essere una pagina html, o restituire un json, xml o
creare un pdf, a seconda di che tipo di View (output) è stato invocato.

per farti capire l'utente deve ricevere il saldo dell'estratto conto, ha
l'opzione di riceverla come pdf, oppure a video come pagina web o come
json nell'app mobile.


per l'accesso al DB uso PDO
ho un file con i setting della mia applicazione dove ci sono tutti i
parametri di config dal database, JVT, logger, ecc


al boot della mia applicazione (se utilizzi il pattern MVC avrai un
unico entry point), mi carico in memoria ad esempio la classe PDO che
ignetto nel model quando serve (tramite dependecy injection).

nel concreto

setting.php
....
return [
'database' = ['host' => '127.0.0.1',
'dbname' => 'miodatabase',
'username' => 'user',
'password' => 'password];
.....


global_dependency_injection.php
......
$setting = $this->setting;
......

$pdo = new PDO("mysql:host=". $setting['database']['host'] . ";dbname="
. $setting['database']['dbname'],
$setting['database']['user'],$setting['database']['password'] );


.......


user_controller.php
.......

include
global_dependency_injection.php

$user = new user($pdo);
$elenco_persone_bonus = $user->GetBonus(1000);

.......



user_model.php
class user {
private $db = null;

private function __construct($db) {
this->$db = $db;
}

public function GetBonus ($bonus) {
$sql = "select nome from tabella where bonus > :param_bonus";
$statement = $this->db->prepare($sql);
$statement->execute(['param_bonus' => $bonus]);
$risultato = $statement->fetchAll;
foreach ($risultato as $row) {
//elaboro le righe
// ad esempio l'elenco degli user con bonus > 1000
$elenco[] = [$row['nome'];
}
return $elenco;
}
}






Enrico Maria Chellini

unread,
Jan 21, 2023, 12:38:52 PMJan 21
to

>
> a rigor di logica mi fa pensare ad un errore di paramatri di
> configurazione per l'accesso al db
>


No è la distribuzione che mi pianta qualcosa, ho installato su Debian
11, va tutto;

unica cosa che devo sviluppare accendendo anche la debian.

Preferivo utilizzare usare solo un pc, ma forse è meglio così; fra un
po' c'è la versione 9 di mageia, questo lo riformatto.

Nel frattempo indago con calma.

Grazie comunque.
Enrico


Enrico Maria Chellini

unread,
Jan 21, 2023, 1:09:07 PMJan 21
to

Il database te lo gestisci e crei a a parte con un tool tipo
mysqlworkbank o sempre tramite synfony?

>
> i progetti li ho sempre basati su pattern MVC (piccoli o grandi
> progetti, non fa differenza, dal servizio rest API, alla paginetta
> dei contatti di un sitarello)

devo installare un modulo e disistallare orm?

>
> quindi la parte di business logic è demandata al Model, nel
> controller non faccio altro che ricevere l'input, fare i classici
> controlli formali e logici e poi chiamo un primo model che si occupa
> della business logic, se ho bisogno di accedere ai dati o scrivere su
> file, chiamare servizi esterni ecc, chiamo i relativi model specifici
> di quella singola azione.
>
> ritorno il tutto al controller che si occuperà di scegliere la view
> corretta, che può essere una pagina html, o restituire un json, xml o
> creare un pdf, a seconda di che tipo di View (output) è stato
> invocato.
>
> per farti capire l'utente deve ricevere il saldo dell'estratto conto,
> ha l'opzione di riceverla come pdf, oppure a video come pagina web o
> come json nell'app mobile.
>
>
> per l'accesso al DB uso PDO
> ho un file con i setting della mia applicazione dove ci sono tutti i
> parametri di config dal database, JVT, logger, ecc
>
>
> al boot della mia applicazione (se utilizzi il pattern MVC avrai un
> unico entry point), mi carico in memoria ad esempio la classe PDO che
> ignetto nel model quando serve (tramite dependecy injection).
>
> nel concreto
>
> setting.php

crei un file nuovo dentro /config?


> global_dependency_injection.php

lo crei tu o fa parte di qualche modulo?
dove lo metti ?

>
> user_model.php
> class user {
> private $db = null;
>
> private function __construct($db) {
> this->$db = $db;
> }
>
> public function GetBonus ($bonus) {
> $sql = "select nome from tabella where bonus > :param_bonus";
> $statement = $this->db->prepare($sql);
> $statement->execute(['param_bonus' => $bonus]);
> $risultato = $statement->fetchAll;
> foreach ($risultato as $row) {
> //elaboro le righe
> // ad esempio l'elenco degli user con bonus > 1000
> $elenco[] = [$row['nome'];
> }
> return $elenco;
> }
> }

Perchè non usi gli oggetti criterea?
non sarebbero più sicuri per evitare sqlinjection?
ho visto che hai fatto un prepare sulla query, i criterea non
semplificherebbero il lavoro con la medesima sicurezza per query
semplici?

son compatibili con MVC?

Enrico

Enrico Maria Chellini

unread,
Jan 21, 2023, 1:38:19 PMJan 21
to
Il giorno Sat, 21 Jan 2023 19:09:05 +0100
Enrico Maria Chellini <bi...@bitit.it> ha scritto:

> Il database te lo gestisci e crei a a parte con un tool tipo
> mysqlworkbank o sempre tramite synfony?
>
> >
> > i progetti li ho sempre basati su pattern MVC (piccoli o grandi
> > progetti, non fa differenza, dal servizio rest API, alla paginetta
> > dei contatti di un sitarello)
>
> devo installare un modulo e disistallare orm?

Aspetta non avevo capito, MVC Model View Controller
non è un modulo tipo ORM ma il framwork, scusa mi sono coglionato da
solo.

comunque il discorso non cambia, per lavorare sena ORM c'è da
installare un modulo particolare che ti ritorna i file sotto indicati?
cosi messa è la stronzata dell'anno, ma viene dal fatto che avevo
frainteso sopra.

Intendevo dire :
gli oggetti criterea non funzionano senza ORM giusto?

quindi ti riscrivi tutte le query di sana pianta, ma rimangono
compatibile con altri moduli symfony o c'è dopo da smanettare?

perchè a parte il lavoro in più, mi si perde un po' il senso del
framwork; posso riscrivere tutto a mano e via.

Enrico



Bramante

unread,
Jan 21, 2023, 4:05:37 PMJan 21
to
Il 21/01/23 19:38, Enrico Maria Chellini ha scritto:
> Il giorno Sat, 21 Jan 2023 19:09:05 +0100
> Enrico Maria Chellini <bi...@bitit.it> ha scritto:
>
>> Il database te lo gestisci e crei a a parte con un tool tipo
>> mysqlworkbank o sempre tramite synfony?
>>


di solito uso un client , ad oggi dbeaver
https://dbeaver.io/

è un client multidatabse


>>>
>>> i progetti li ho sempre basati su pattern MVC (piccoli o grandi
>>> progetti, non fa differenza, dal servizio rest API, alla paginetta
>>> dei contatti di un sitarello)
>>
>> devo installare un modulo e disistallare orm?
>
> Aspetta non avevo capito, MVC Model View Controller
> non è un modulo tipo ORM ma il framwork, scusa mi sono coglionato da
> solo.

MVC non è un framework, ma un pattern di sviluppo
la maggior parte dei framework utilizzano il pattern MVC

>
> comunque il discorso non cambia, per lavorare sena ORM c'è da
> installare un modulo particolare che ti ritorna i file sotto indicati?
>

per lavorare senza orm, non c'è bisogno di nessun modulo se vuoi, puoi
scriverti le tue classi come preferisci.
non so cosa sono gli oggetti criterea, mi spieghi meglio o mi dai un
link dove andarli a vedere?

>
> quindi ti riscrivi tutte le query di sana pianta, ma rimangono
> compatibile con altri moduli symfony o c'è dopo da smanettare?

non mi "RIscrivo" tutte le query ma le scrivo una volta.
nella maggior parte dei casi sarà difficile che avrai bisogno di dati da
una singola tabella, ma avrai bisogno di un aggregato di dati da più
tabelle e magari con elaborazione delle informazioni (concatenazioni,
somme, sottogruppi, ecc) o sicuramente quando aggiorni/inserisci, non lo
farai su una singola tabella, ma devi comunque mantenerne l'integrita
(ad esempio se aggiorni un anagrafica, la storicizzi, quindi update e
insert su più tabelle), ad esempio in un applicazione quando viene
aggiornato un certo tipo di dato (come i dati sensibili dell'anagrafica
o finanziari), vengono memorizzate diverse informazioni su chi ha
effettuato l'aggiornamento ed in casi particolari viene inviata una
notifica verso un altro dipartimento che si occupa di sicurerzza.


>
> perchè a parte il lavoro in più, mi si perde un po' il senso del
> framwork; posso riscrivere tutto a mano e via.
>


un framework non è altro che una collezione di classi organizzate in
modo organico
puoi avere dei framework monolitici o come va da qualche anno a questa
parte dei microfrawerok

la differenza tra i due è che il primo, symphony ad esempio, al suo
interno contiene tutti i moduli che in genere hai bisogno per scrivere
applicazioni di livello enterpise (e non solo), ad esempio ha le classi
che gestiscono il db, quelle che gestiscono l'email, classi per la
gestione e creazione delle form, per i messaggi, l'autenticazione, il
routing, HTTP-message (PSR-15) DI (dipendency injection) PSR-11, il
caching, gli eventi, la gestione degli errori, la validazione
dell'input, un template system, ecc, il tutto incentrato sul pattern
MVC, ha una sua sintassi, e una sua curva di apprendimento.
si chiamano monolitici perchè ti impongono di usare l'intera
infrastruttura del framework stesso, in genere sono robusti ma "più
lenti" perchè magari si precaricano in memoria moduli core che per
progetti piccoli magari non ti servono come può essere il caching o la
gestionde degli errori (se sai dove guardare si disabilitano).

i microframework ti mettono a disposizione solo lo scheletro per la tua
applicazione,
per gli ultimi progetti sto utilizzando slim
(https://www.slimframework.com/)
di suo mette a disposizione il routing, la dipendency injection (DI)
tramite container (PSR-11), HTTP-message (PSR-7), e middleware (PSR-15)

ogni altro componente che ti dovesse servire hai facolta di scrivertelo
da te o andare di composer (questo è valido anche per synphony se non
dovessi trovare un modulo che ti serve)
così puoi utilizzare ad esempio doctrine/lamina/lavarel/ecc per il db o
scriverti le query come faccio io, puoi usare un qualsiasi modulo
composer per gestire l'email, il caching, i form, la validazione ecc
l'importante che siano compatibili PSR-11 (container)




> Enrico
>
>
>

Enrico Maria Chellini

unread,
Jan 23, 2023, 10:09:10 AMJan 23
to

> di solito uso un client , ad oggi dbeaver
> https://dbeaver.io/

si l'ho installato di recente

>
> > Aspetta non avevo capito, MVC Model View Controller
> > non è un modulo tipo ORM ma il framwork, scusa mi sono coglionato da
> > solo.
>
> MVC non è un framework, ma un pattern di sviluppo
> la maggior parte dei framework utilizzano il pattern MVC

ok, intendevo dire che non era un modulo e che avevo capito male
precedentemente.

> >>>
> >>> setting.php
> >>
> >> crei un file nuovo dentro /config?
> >>
> >>
> >>> global_dependency_injection.php
> >>
>
> non so cosa sono gli oggetti criterea, mi spieghi meglio o mi dai un
> link dove andarli a vedere?

https://symfony.com/legacy/doc/book/1_1/en/08-Inside-the-Model-Layer

>
> >
> > quindi ti riscrivi tutte le query di sana pianta, ma rimangono
> > compatibile con altri moduli symfony o c'è dopo da smanettare?
>

ok per tutto;
io ho seguito abbastanza rigidamente un paio di toutorial un po' di
tempo fà;
poi ho interagito con i moduli di un CMS, basato su symfony, che più o
meno usava la stessa logica.

Pero mi interessa capire bene anche come lavori te.

Mi spiego, se ho capito bene:


IO ho fatto l'installazione modificando il file .env e lanciando
#symfony console doctrine:database:create

TU hai creato due, file uno config/setting.php e l'altro
config/global_dependency_injection.php


IO il database l'ho costruito da riga di
comando #symfony console make entity


TU https://dbeaver.io/

poi scrivi le query in maniera row, che rende sicuramente più veloce
l'esecuzione e ti da un controllo maggiore delle query

Giusto?

Enrico

Bramante

unread,
Jan 23, 2023, 1:56:16 PMJan 23
to
Il 23/01/23 16:09, Enrico Maria Chellini ha scritto:

>>
>> non so cosa sono gli oggetti criterea, mi spieghi meglio o mi dai un
>> link dove andarli a vedere?
>
> https://symfony.com/legacy/doc/book/1_1/en/08-Inside-the-Model-Layer
>

capito, una classe propria di symfony

>>
>>>
>>> quindi ti riscrivi tutte le query di sana pianta, ma rimangono
>>> compatibile con altri moduli symfony o c'è dopo da smanettare?
>>
>
> ok per tutto;
> io ho seguito abbastanza rigidamente un paio di toutorial un po' di
> tempo fà;
> poi ho interagito con i moduli di un CMS, basato su symfony, che più o
> meno usava la stessa logica.
>
> Pero mi interessa capire bene anche come lavori te.
>
> Mi spiego, se ho capito bene:
>
>
> IO ho fatto l'installazione modificando il file .env e lanciando
> #symfony console doctrine:database:create
>
> TU hai creato due, file uno config/setting.php e l'altro
> config/global_dependency_injection.php
>
>
> IO il database l'ho costruito da riga di
> comando #symfony console make entity
>
>
> TU https://dbeaver.io/
>
> poi scrivi le query in maniera row, che rende sicuramente più veloce
> l'esecuzione e ti da un controllo maggiore delle query
>
> Giusto?


premetto che gli attuali progetti che sviluppo sono di supporto al
lavoro vero e proprio, sono app (web e non) interne all'organizzazione e
sono tool che ci consentono di velocizzare le attività (ho smesso i
panni dello sviluppatore puro un bel pò di anni fa)

mi avvalogo sempre di un framework per non reinventare la ruota
all'inizio ZendFramework ora SlimFramework.

quasi tutti i framework mettono a disposizione dei file di config e di
ambiente
(.env è un file di environment, cioè a seconda di dove si trova
installata la tua applicazione come ad esempio ambiente di dev, di
collaudo, test, o produzione, prende dei valori differenti e li mette
nelle variabili inserite nel file .env, in questo modo ad esempio non
devi cambiare puntamento del db, se ne utilizzi diversi a seconda se sei
in test o produzione, oppure abilitare il debugging solo in ambiente di
dev, ecc)

nessuno ti vieta di creare n-file di config.
in un applicazione che sviluppavamo in 3, ognuno di noi si occupava di
un modulo e avevamo ognuno il suo file di config per il proprio modulo.
- settings.php -- per le info dell'intera applicazione
- config_db.php --- specifico per i database (l'applicazione si connette
a 4 db diverrsi, 1 mysql, 3 oracle)
- config_api.php -- gestisce le config per i servizi esterni
- config_xxxx -- specifico del modulo che stavamo sviluppando

tutti questi file li includiamo "include("config_db.php")" dentro
settings.php (slim utilizza questo file come principale)

ti ho fatto l'esempio di global_dependency_injection.php, per spiegare
la DI, cioè quando instanzio delle classi come nell'esempio $user
gli inietto tutte le dipendenze necessarie (nell'esempio l'accesso al
db, ma può essere una configurazione per scrivere su filesystem, o un
servizio esterno o un altra classe come può essere fpdf), cioè passo
alla classe che sto instanziando tutti gli oggetti necessari, questo ti
evita di instaziare altre classi all'interno della tua.

la maggior parte dei framework di ultima generazione utilizzano i
container per iniettare le dipendenze, devi studiarti come lo fa symfony
in slim è molto semplice (una volta capito come funziona)


scrivo le query da me perchè reputo inuntile e dannoso l'utilizzo di
orm, va bene per chi non conosce SQL e deve fare delle query semplici,
ma nel momento in cui hai necessità di manipolare dati un orm è solo di
intralcio, e poi oltre che sviluppatore sono stato DBA oracle.

per il db, non ti impiccare per creare il databse con php, non ha
assolutamente senso, usa il tool che più ti piace.
alla fine una volta creato se hai necessità di esportarlo, non fai altro
che esportare tramite il tool, le istruzioni sql di dml (create, drop,
ecc) e vale anche per il popolamento dei dati iniziali.
ti crei uno o più file sql con tutte le istruzione che servono per
replicare il database che ti sei creato.



farlo da php ha senso se la tua applicazione viene distribuita e prevede
un setup del database da zero in fase di installazione
dell'applicazione, come avviene per i vari CMS.


saluti



>
> Enrico
>

Enrico Maria Chellini (bitit)

unread,
Jan 26, 2023, 1:58:12 PMJan 26
to

>
> farlo da php ha senso se la tua applicazione viene distribuita e prevede
> un setup del database da zero in fase di installazione
> dell'applicazione, come avviene per i vari CMS.
>

Sempre Enrico, ma non mi funziona il server di connessione all'usenet , quindi sono entrato con google.

studio un po' quello che mi hai scritto, anche perchè sono abituato a una programmazione molto ruvida di php, quindi probabile mi trovi meglio che a utilizzare classi e funzioni che sono differenti da php stantard; anche se ho l'obbiettivo di impararmele.

Grazie.
Enric




Reply all
Reply to author
Forward
0 new messages