描述一下数据结构
描述一下数据结构
每gestire il数据库da PHP, il progetto dipenderà da学说数据库:DBAL原则(每数据库一层),ORM原则(每数据库一层数据库使用的内容),e原则迁移。
Configurare l'ORM di Doctrine
来一个“良知主义”数据库吗?“教义”是一种理论,配置/包/ doctrine.yaml
, che controlla il suo comportamento。冒名顶替原则è ilDSN(数据源名称),una stringa contentente tutte le informazioni sula connessione: credenziali,主机,porta, ecc。根据预先定义,环境变化原则DATABASE_URL
.
准tutti i pacchetti安装hanno una configurazione sotto la cartella配置/包/
.内拉·马约尔部分的财产,我的价值,预先确定的,可计算的,精确的,按资金计算的,可应用的più communi。
关于环境变化的召集委员会ob娱乐下载
È可能定义la变量DATABASE_URL
手册nel文件.env
O nel文件.env.local
.我爱你,我爱你,我爱你DATABASE_URL
nel文件.env
.Ma poiché la porta locale di PostgreSQL esposta da Docker potrebbe cambiare, tale definizione è piuttosto imprecisa。Cerchiamo una soluzione migliore。
具体手工价值损失DATABASE_URL
在联合国的档案里,我有一个我可以指挥的国家ob娱乐下载
.Questo prefisso consentirà di rilevare i servizi eseguiti da Docker e/o Platform.sh (quando il tunnel è aperto) e imposterà automaticamente la variile d'ambiente。
Docker Compose e Platform.sh funzionano perfettamente con ob娱乐下载Symfony, grazie a questevariabili d'ambiente。
控制环境的可变因素ob娱乐下载symfony var:出口
:
1
$ob娱乐下载symfony var:出口
1 2
DATABASE_URL = postgres: / /主要:main@127.0.0.1:32781 /主要吗?Sslmode =disable&charset=utf8 #…
Ricordate ilNome del servizio数据库
usato nelle configurazioni Docker e Platform.sh?我知道,我有自己的服务,我有自己的想法,我有自己的环境DATABASE_URL
.我有自己的想法,我有自己的想法,我有自己的想法,我有自己的想法。ob娱乐下载
请注意
我的数据库,非声音,唯一的服务,利益,和,会议,关于Symfony。ob娱乐下载Lo stesso vale per Mailer, per esempio (tramite la variile d’ambienteMAILER_DSN
).
在。env中预定义DATABASE_URL
Modificheremo ancora il文件.env
,我的价值是永恒的DATABASE_URL
, affinché utilzzi PostgreSQL:
1 2 3 4 5 6 7 8 9 10 11
——/ .env+ + + b / .env@@ -29,7 +29,7 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 # # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!serverVersion = 8 charset = utf8mb4”-DATABASE_URL = " postgresql: / / app: ChangeMe ! @127.0.0.1:5432 /应用程序吗?serverVersion = 14 charset = utf8 "+ DATABASE_URL = " postgresql: / / 127.0.0.1:5432 / db吗?serverVersion = 14 charset = utf8 "###<教条/教条-捆绑### ###> symfony/信使###ob娱乐下载
Perché信息的多样性?Perché su alcune piattaforme云ob直播app,在Fase di compilazione, l'URL del database potrebbe non essere ancora noto, ma Doctrine ha bisogno di conoscere il tipo di database (PostgreSQL, MySQL, SQLite, ecc) per costruire la sua configurazione。我的主人,我的口令不重要。
Creazione di classi实体
Una conferenza può essere descritta con alcune proprietà:
- 拉异食癖鸽子会议;
- L '伊斯兰教纪元德拉conferenza;
- 联合国坎波国际per indicare se la conferenza è locale o internazionale (ob娱乐下载SymfonyLive vs SymfonyCon)。
MakerBundle può aiutarci a generare una class (una class实体) che rappresenta una conferenza。
Ẽ一般的时刻'entità会议
1
$ob娱乐下载symfony控制台make:实体会议
询问指挥官è interattivo: vi guiderà必要的过程。在“Invio”的modo da poterle Scegliere premendo il tasto“Invio”中:
城市
,字符串
,255
,没有
;一年
,字符串
,4
,没有
;的国际
,布尔
,没有
.
Ecco l'output completo quando si esegue il comando:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
创建:src/Repository/ConferenceRepository.php现在让我们添加一些字段!您可以稍后手动或重新运行此命令添加更多字段。新属性名称(按<返回>停止添加字段):> city字段类型(enter ?查看所有类型)[string]: >字段长度[255]:>该字段在数据库中是否为空(nullable) (yes/no) [no]: > updated: src/Entity/Conference.php添加另一个属性?输入属性名(或按停止添加字段):> year字段类型(Enter ?查看所有类型)[string]: >字段长度[255]:> 4该字段在数据库中可以为空(nullable) (yes/no) [no]: > updated: src/Entity/Conference.php添加另一个属性?输入属性名(或按停止添加字段):> isInternational字段类型(Enter ?查看所有类型)[boolean]: >这个字段在数据库中可以为空(nullable) (yes/no) [no]: > updated: src/Entity/Conference.php添加另一个属性?输入属性名(或按停止添加字段):> Success! Next: When you're ready, create a migration with make:migration
洛杉矶的架势会议
è stata salvata sotto il namespace应用实体\ \
.
Il comando ha anche generato una class存储库di学说:App \ Repository \ ConferenceRepository
.
Il codice generato ha Il seguente aspetto (solo una piccola partte file viene riportata):
Si noti che la class se stessa è una semplice class se PHP, senza segni di Doctrine。Gli attribute sono usati per aggiungere metadata utili Doctrine per mapappare la class真主安拉relativelabella del database。
教条ha aggiunto una proprietàid
根据记忆la chiave primaria Della Riga nella tabella del数据库。香椿(ORM \ Id ()
)自动生代(ORM \ GeneratedValue ()
) tramite una strategia che dipende dal tipo di数据库。
Ora, generiamo una class entity per i commenti真主安拉conferenza:
1
$ob娱乐下载symfony控制台make:实体注释
插入le seguenti risposte:
作者
,字符串
,255
,没有
;文本
,文本
,没有
;电子邮件
,字符串
,255
,没有
;createdAt
,datetime_immutable
,没有
.
Collegare le实体
我们的实体,会议评论。Una conferenza può avere zero o più commenti, che è detta relazioneuno-a-molti.
Usare di nuovo il comando:实体
每aggiungere questa relazione真主安拉类会议
:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
您的实体已经存在!因此,让我们添加一些新字段!新属性名(按<返回>停止添加字段):> comments字段类型(输入?[string]: > OneToMany这个实体应该与什么类相关?一个新的属性也将被添加到Comment类…注释[conference]中的新字段名:>是注释。会议属性允许为空(可空)?(yes/no) [yes]: > no你想在你的关系上激活orphanRemoval吗?当一条注释从相关的会议中删除时,它就是“孤儿”。注意:如果一个注释可以从一个会议更改到另一个会议,回答“no”。你想自动删除孤立的应用程序\实体\评论对象(orphanRemoval)?(yes/no) [no]: > yes updated: src/Entity/Conference.php updated: src/Entity/Comment.php
请注意
Se si inserisce?
来risposta al tipo, si ottengono tutti I tipi supportati:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
主要类型*文本字符串* *布尔*整数(或短整型、长整型数字)/协会* *浮动关系关系(一个向导将帮助您构建的关系)* ManyToOne * OneToMany * ManyToMany * OneToOne数组/对象类型*数组(或simple_array) * json对象* *二进制*团日期/时间* datetime类型(或datetime_immutable) * datetimetz(或datetimetz_immutable) *日期(或date_immutable) *时间(或time_immutable) * dateinterval其他类型*十进制* * json_array guid
日期un'occhiata al diff completo per le classi entity dopo aver aggiunto la relazione:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
——/ src /实体/ Comment.php+ + + b / src /实体/ Comment.php@@ -36,6 +36,12 @@ class Comment */ private $createdAt;+ #[ORM\ManyToOne(inversedBy: 'comments')]+ #[ORM\JoinColumn(nullable: false)]+私人会议$会议;+公共函数getId(): ?int{返回$this->id;@@ -88,4 +94,16 @@类注释返回$this;}++公共函数getConference():+ {+返回$this->会议;+}++公共功能setConference(?会议$会议):自我+ {+ $this->conference = $conference;++返回$this;+}}——/ src /实体/ Conference.php+ + + b / src /实体/ Conference.php@@ -2,6 +2,8 @@名称空间的应用程序\实体;+使用原则\常见\ \ ArrayCollection集合;+使用原则\常见\集合\集合;使用Doctrine\ORM\Mapping作为ORM;/** @@ -31,6 +33,16 @@班级会议*/ private $isInternational;+ #[ORM\OneToMany(targetEntity: Comment::class, mappedBy: "conference", orphanRemoval: true)]+私人$评论;++公共函数__construct()+ {+ $this->comments = new ArrayCollection();+}+公共函数getId(): ?int{返回$this->id;@@ -71,4 +83,35 @@ class会议返回$this;}++ / * *+ * @返回集合 + * /+公共函数getComments():集合+ {+返回$this->注释;+}++公共函数addComment(Comment $ Comment): self+ {+ if (!$this->comments->contains($comment)) {+ $this->comments[] = $comment;+ $评论- > setConference ($);+}++返回$this;+}++公共函数removeComment(Comment $ Comment): self+ {+ if ($this->comments->contains($comment)) {+ $ this - >评论> removeElement($评论);+ //设置所属端为空(除非已经更改)+ if ($comment->getConference() === $this) {+ $评论- > setConference(空);+}+}++返回$this;+}}
tto ciò di cui si ha bisogno per gestire la relazione è statto generato。有一个世代的动力,有一个神圣的灵魂,有è个人的自由来选择。
Aggiungere alter proprietà
在那的一个地方,在那的一个地方proprietà sull'entity评论:在那一个地方,在那一个地方,在那一个地方,在那一个地方,在那一个地方。
Eseguire:实体
安科拉una volta e aggiungere una proprietà/colonnaphotoFilename
迪蒂波字符串
,我同意我的价值零
在modo da renderere opzionale il caricamento:
1
$ob娱乐下载symfony控制台make:实体注释
Migrazione del数据库
Il modello di progetto è ora completamente desitto dalle due classi generate。
继承,abbiamo bisogno di creare le table del database relative a quest entity PHP。
教义迁移è关于联合国行为准则的解决方案。È già stato installato come parte Della dipendenzaorm
.
Unamigrazioneè una class che description le modifiche必需品描述aggiornare lo schema di UN database dal so statto attuale a quello nuovo, definito dagli attributi delle entity。Poiché per ora il数据库è vuoto, la migrazione dovrebbe essere composta dalla sola creazione di due table。
Vediamo cosa属学说
1
$ob娱乐下载Symfony控制台make:迁移
Si noi il nome del file generato nell'output (un nome che assomiglia a迁移/ Version20191019083640.php
):
aggiorchento del数据库区域
Ora è可能的esesguire la migrrazione generata per aggiornare lo schema del database locale:
1
$ob娱乐下载Symfony控制台原则:迁移:迁移
Lo schema del database locale è ora aggiornato e pronto a memorizzare dati。
aggiorchento del database di produzione
I passi must per migration il database di produzione sono gli stessi visti in precedenza: commit delle modifiche e deploy。
平台.sh aggiorna il codice,数据库数据库的最终迁移问题原则:迁移:迁移
).
$ob娱乐下载symfony控制台make:实体会议