死Datenstruktur beschreiben
死Datenstruktur beschreiben
嗯在PHP麻省理工学院der Datenbank umzugehen,了我们学说verwenden,一张Reihe冯·Bibliotheken死Entwickler * innen helfen, Datenbanken祖茂堂verwalten:教义DBAL(一杯Datenbank-Abstraktions-Schicht)教义ORM(一张位于嗯unseren Datenbank-Inhalt anzupassen麻省理工学院帮助冯PHP-Objekten)和教义迁移。
教义ORM konfigurieren
哇kennt教义Datenbankverbindung死去了呢?Das Doctrine-Recipe帽子一张Konfigurationsdatei hinzugefugt,配置/包/ doctrine.yaml
,死das Verhalten steuert。死wichtigste定势是死Datenbank-DSN、一杯Zeichenkette死阿莱Informationen超级死Verbindung enthalt: Anmeldeinformationen,主机、端口等。Standardmaßig sucht教义去der环境变量DATABASE_URL
。
快阿莱installierten Pakete Konfigurationsdatei im的风景明信片配置/包/
-Verzeichnis。Normalerweise信德死Standardeinstellungen gewahlt,您毛皮死meisten Anwendungen funktionieren。
Konventionen毛皮Symob娱乐下载fony-Environment-Variablen对
杜kannstDATABASE_URL
在der manuell.env
——奥得河.env.local
-Datei definieren。潮湿的des食谱des寄爸爸Du sogar beispielhafteDATABASE_URL
在我.env
-Datei。但达西奇der lokale港口PostgreSQL汪汪汪,范德·冯·码头工人festgelegt将,andern萤石,是这位Weg雷希特umstandlich。Es有杯besseren Weg。
在静脉Anstatt Datei电影节DATABASE_URL
einzusetzen,能帮我们阿莱Befehle麻省理工学院ob娱乐下载
prefixen。Dadurch了Dienste erkannt死·冯·码头工人和/或平台。sh ausgefuhrt了(要是der隧道geoffnet ist)和死亡环境变量将automatisch gesetzt。
码头工人组成和平台。sh arbeiten潮湿的这位Environment-Variablen nahtlos麻省理工学院Symfonyob娱乐下载 z。
杜uberprufst阿莱exponierten Environment-Variablen indem Duob娱乐下载symfony var:出口
ausfuhrst:
1
美元ob娱乐下载symfony var:出口
1 2
DATABASE_URL = postgres: / /主要:main@127.0.0.1:32781 /主要吗?sslmode = disable&charset = utf8 #……
Erinnerst Du你一个窝数据库
- - - - - -Servicenamen,der窝Konfigurationen冯码头工人和平台。sh verwendet将?死Servicenamen了als Prafixe毛皮Environment-Variablen体育运动DATABASE_URL
verwendet。你要是服务去窝Symfony-Konventionen bob娱乐下载enannt信德,坚持keine weitere Konfiguration erforderlich。
请注意
Datenbanken信德不der足球服务,范德·冯·窝Symfony-Konventionen profitiob娱乐下载ert。Das Gleiche镀金z。b .毛皮梅勒(uber死环境变量MAILER_DSN
)。
窝Standardwert DATABASE_URL在.env andern
我们的模具.env
-Datei dennoch andern,嗯标准——死亡DATABASE_URL
毛死Verwendung冯PostgreSQL festzulegen:
1 2 3 4 5 6 7 8 9 10 11
- - - a / .env+ + + b / .env@@ -28 7 + 28 7 @@ MESSENGER_TRANSPORT_DSN =学说:/ /默认吗?auto_setup = 0 # # DATABASE_URL = " sqlite: / / / % kernel.project_dir % / var /数据。db“# DATABASE_URL = " mysql: / / db_user: db_password@127.0.0.1:3306 / db_name ? serverVersion = 5.7 charset = utf8mb4”-DATABASE_URL = " postgresqlob娱乐下载: / / symfony: ChangeMe@127.0.0.1:5432 / app ? serverVersion = 13 charset = utf8 "+ DATABASE_URL = " postgresql: / / 127.0.0.1:5432 / db ? serverVersion = 13 charset = utf8 "# # # <教义/ doctrine-bundle # # # # # # ob娱乐下载> symfony /信使# # #
为什么得死Informationen一个请来两verschiedenen Stellen dupliziert了吗?达并把汪汪汪Cloud-Plaob直播appttformen zumZeitpunkt des构建死Datenbank-URL moglicherweise还有不bekannt,吵架原则死引擎der Datenbank kennen,嗯您Konfiguration祖茂堂erstellen。大刀信德der主机和死Zugangsdaten不wirklich wichtig。
Entity-Klassen anlegen
明信片Konferenz萤石麻省理工学院并把wenigen Eigenschaften beschrieben了:
- 死城市在der死Konferenz organisiert将;
- 达斯Jahrder Konferenz;
- 静脉国际国旗,angibt死去,ob死Konferenz lokal奥得河国际坚持(SymfonyLive比SymfonyCon)。ob娱乐下载
Das Maker-Bundle萤石爹妈helfen,一张Klasse(风景明信片Entity-Klasse)祖茂堂generieren死一张Konferenz reprasentiert。
现在是es der时间死去会议
generieren实体:
1
美元ob娱乐下载symfony控制台:实体会议
这位Befehl是interaktiv:呃fuhrt你的军队窝Prozess des Hinzufugens通向benotigten镶嵌地块。Verwende死folgenden Antworten(死meisten davon信德Standardwerte死去,Du kannst味道“输入”drucken死去,嗯您祖茂堂verwenden):
城市
,字符串
,255年
,没有
;一年
,字符串
,4
,没有
;的国际
,布尔
,没有
。
这是死vollstandige Ausgabe des Befehls:
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
创建:src /实体/会议。php创建:src /仓库/ ConferenceRepository。php生成实体!现在让我们添加一些字段!你可以添加多个字段后手动或通过重新运行这个命令。新的属性名(按<返回>停止添加字段):>城市字段类型(输入?查看所有类型)[string]: >字段长度[255]:>可以在数据库中该字段为null(可以为空)(yes / no)[不]:>更新:src /实体/会议。php添加另一个属性吗?输入属性名称(或按<返回>停止添加字段):>年字段类型(输入?查看所有类型)[string]: >字段长度[255]:> 4可以在数据库中该字段为null(可以为空)(yes / no)[不]:>更新:src /实体/会议。php添加另一个属性吗?输入属性名称(或按<返回>停止添加字段):>国际字段类型(输入?看到所有类型)(布尔):>可以在数据库中该字段为null(可以为空)(yes / no)[不]:>更新:src /实体/会议。php添加另一个属性吗? Enter the property name (or press to stop adding fields): > Success! Next: When you're ready, create a migration with make:migration
死会议
-Klasse, unt民主党应用实体\ \
名称空间abgelegt。
Der Befehl erzeugte欧什学说Repository-Klasse:App \ Repository \ ConferenceRepository
。
Der generierte代码sieht是不是folgt来自(nur静脉kleiner菩提树Der Datei将海尔gezeigt):
Beachte, dass死Klasse selbst一张einfache PHP-Klasse ohne Anzeichen冯教条坚持。死教条verwendet Mittels Attributen了Metadaten hinzugefugt,嗯死Klasse der zugehorigen Datenbanktabelle zuzuordnen。
主义的帽子静脉id
属性/ Spalte hinzugefugt,嗯的巢穴Primarschlussel der Zeile der Datenbanktabelle祖茂堂speichern。这位Schlussel (ORM \ Id ()
)将abhangig vom verwendeten Datenbanksystem automatisch generiert (ORM \ GeneratedValue ()
)。
Erzeuge修女Entity-Klasse皮毛Konferenzkommentare:
1
美元ob娱乐下载symfony控制台:实体发表评论
Gebe死folgenden Antworten静脉:
作者
,字符串
,255年
,没有
;文本
,文本
,没有
;电子邮件
,字符串
,255年
,没有
;createdAt
,datetime_immutable
,没有
。
实体miteinander verknupfen
死beiden实体、会议和评论,sollten miteinander verbunden了。明信片Konferenz萤石零奥得河Kommentare有、肌萎缩性侧索硬化症One-to-Many-Beziehungbezeichnet将。
Verwende erneut窝:实体
-Befehl,嗯这张Beziehung苏珥会议
-Klasse hinzuzufugen:
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
你的实体已经存在!让我们添加一些新领域!新的属性名(按<返回>停止添加字段):>注释字段类型(输入?查看所有类型)[string]: >对这个实体应该与哪个班?:>评论一个新的属性也将被添加到评论类…新字段名在评论(会议):>是评论。会议性质允许null(可以为空)?(yes / no)[是]:>没有你想激活orphanRemoval你们的关系?评论是“孤儿”时从相关会议。例如$会议- > removeComment(评论美元)注:如果评论可能* *从一个会议到另一个改变,回答“不”。你想自动删除孤儿App \实体\评论对象(orphanRemoval) ?(yes / no)[不]:>是的更新:src /实体/会议。php更新:src /实体/ Comment.php
请注意
要是Du als Antwort天改Typ吗?
eingibst, erhaltst杜阿莱unterstutzten Typen:
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
主要类型*文本字符串* *布尔*整数(或短整型、长整型数字)/协会* *浮动关系关系(一个向导将帮助您构建的关系)* ManyToOne * OneToMany * ManyToMany * OneToOne数组/对象类型*数组(或simple_array) * json对象* *二进制*团日期/时间* datetime类型(或datetime_immutable) * datetimetz(或datetimetz_immutable) *日期(或date_immutable) *时间(或time_immutable) * dateinterval其他类型*十进制* * json_array guid
Wirf杯耀光auf das vollstandige Diff毛皮Entity-Klassen死去,nachdem杜死Beziehung(关系)hinzugefugt所:
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 @@类评论* /私人createdAt美元;+ # [ORM \ ManyToOne (inversedBy:“评论”)]+ # (ORM \ JoinColumn(可以为空:false))美元+私人会议会议;+公共函数getId (): int ?{返回$ this - > id;@@ -88、4 + 94,16美元@@类评论返回;}++公共职能getConference(): ?会议+ {+ $ this - >返回会议;+}++公共函数setConference (?会议会议美元):自我+ {= $ + $ this - >会议会议;+美元+返回;+}}- - - / src /实体/ Conference.php+ + + b / src /实体/ Conference.php@@ 2,6 + 2,8 @@名称空间的应用程序\实体;+使用原则\常见\ \ ArrayCollection集合;+使用原则\常见\集合\集合;使用原则\ ORM \ ORM映射;/ * * @@ -31 6 + 33岁16 @@类* /私人美元的国际会议;+ # [ORM \ OneToMany (targetEntity:评论::类的mappedBy:“会议”,orphanRemoval: true))+私人美元评论;++公共__construct()函数+ {+ $ this - >评论= new ArrayCollection ();+}+公共函数getId (): int ?{返回$ this - > id;@@ -71、4 + 83,35美元@@类会议返回;}++ / * *+ * @return收集< int、评论>+ * /+公共职能getComments():收集+ {+返回$ this - >评论;+}++公共职能addComment(评论评论美元):自我+ {+如果(! $ this - >评论>包含(评论美元)){+ $ this - >评论[]= $评论;+ $评论- > setConference ($);+}+美元+返回;+}++公共职能removeComment(评论评论美元):自我+ {+如果($ this - >评论- >包含(评论美元)){+ $ this - >评论- > removeElement($评论);+ / /拥有端设置为null(除非已经改变了)+如果($评论- > getConference () = = = $) {+ $评论- > setConference(空);+}+}+美元+返回;+}}
一切,是杜皮死Verwaltung benotigst冯关系,假日,毛皮你generiert。gehort er Dir Sobald der编码generiert坚持;佐格不,他去Deinen Wunschen anzupassen。
(Spalten) hinzufugen Weitere属性
米尔是恰巧aufgefallen、dass我们vergessen有静脉财产苏珥Comment-Entity hinzuzufugen:死Teilnehmer * innen想vielleicht静脉与der Konferenz anhangen,嗯祖茂堂veranschaulichen《国际卫生条例》的反馈。
Fuhre:实体
一遍来自和fuge静脉photoFilename
属性/ Spalte Typ生效字符串
hinzu,但小姑娘es零
盛,da das Hochladen进行有意者可选的是:
1
美元ob娱乐下载symfony控制台:实体发表评论
死Datenbank migrieren
Das Projektmodell将修女的军队死beiden generierten克拉森vollstandig beschrieben。
Als nachstes得我们死Datenbanktabellen erstellen,死西奇这汪汪汪PHP-Entitys beziehen。
教义迁移是死perfekte Erganzung毛皮一张solche Aufgabe。Es bereits als菩提树derorm
依赖installiert。
风景明信片迁移这是Klasse, welche死Anderungen beschreibt,死erforderlich信德,嗯静脉Datenbankschema冯朝向aktuellen Zustand天改neuen Zustand, der军队死在窝实体属性definiert坚持,祖茂堂aktualisieren。Da死Datenbank vorerst秋波是,sollte死移民来自请来两Eintragen bestehen。
瞧瞧吧,教义erzeugt:
1
美元ob娱乐下载symfony控制台:迁移
Beachte窝generierten Dateinamen der Ausgabe(静脉的名字,所以aussieht迁移/ Version20191019083640.php
):
死lokale Datenbank aktualisieren
杜kannst修女死generierte迁移ausfuhren,嗯das lokale Datenbankschema祖茂堂aktualisieren:
1
美元ob娱乐下载symfony控制台学说:迁移:迁移
Das lokale Datenbankschema是嫩汪汪汪民主党aktuellen站和bereit, einige Daten祖茂堂speichern。
死Datenbank der Produktivumgebung aktualisieren
Schritte死去,死皮死迁移der Datenbank毛皮死Produktivumgebung erforderlich信德,信德死gleichen是不是死了,麻省理工学院denen Du bereits vertraut阿拉伯学者:委员会Anderungen和时死去。
贝姆部署des Projekts aktualisiert平台。sh窝代码,fuhrt河口欧什死Datenbankmigration军队,vorhanden(平台。sh erkennt ob der原则:迁移:迁移
-Befehl existiert)。
Weiterfuhrendes
- Datenbanken和教义ORM在Syob娱乐下载mfony-Anwendungen;
- ob娱乐下载SymfonyCasts理论教程;
- Arbeiten麻省理工学院主义协会/关系;
- DoctrineMigrationsBundle Dokumentation。
美元ob娱乐下载symfony控制台:实体会议