Last active
December 23, 2015 18:29
-
-
Save kaystrobach/6675601 to your computer and use it in GitHub Desktop.
FLOW Documentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Doctrine in TYPO3 FLOW ORM/* {#doctrine} | |
=================================== | |
Einfache Datentypen (Attribute) | |
------------------------------- | |
@code | |
class Blog { | |
/** | |
* @var string | |
* ^---- Standarddatentyp string | |
*/ | |
protected $title; | |
/** | |
* @var boolean | |
*/ | |
protected $public = TRUE; | |
// ^---- setzt einen Standardwert | |
} | |
@endcode | |
OneToOne (1:1) | |
-------------------- | |
### Student Kontakt Relation | |
@code | |
class Kontakt { | |
/** | |
* @var Student | |
* ^---- $student ist ein Objekt vom Typ Student | |
* @ORM\OneToOne(cascade={"persist"}) | |
* ^ ^--- cascade="persist" erzwingt das Speichern von $student, wenn kontakt gespeichert wird, Einsatz hängt vom Kontext ab | |
* | ohne cascade="persist" muss der Kontakt explizit gespeichert werden | |
* +-------------- steht hier immer, wenn es keine 1:n oder n:m Beziehung ist | |
*/ | |
protected $student | |
} | |
class student { | |
.... | |
} | |
@endcode | |
Das Beispiel erzeugt 2 Tabellen. | |
| Tabelle | Felder | | |
|:---------|:----------------------------------------------------------| | |
| Kontakt | persistence_object_identifier, student als Fremdschlüssel | | |
| Student | persistence_object_identifier | | |
### Blog und Post Relation | |
@code | |
class Blog { | |
/** | |
* @var Author | |
* ^---- $author ist vom Typ Author | |
* @ORM\OneToOne(cascade={"persist"}) | |
* ^ ^--- Erzwingt das Speichern von $author, wenn Blog gespeichert wird, Einsatz hängt vom Kontext ab | |
* +-------------- legt fest, dass immer genau ein Objekt von dem Typ in dem Attribut sein muss | |
*/ | |
protected $author | |
} | |
class Author { | |
.... | |
} | |
@endcode | |
Das Beispiel erzeugt 2 Tabellen. | |
| Tabelle | Felder | | |
|:---------|:-------------------------------------------------------| | |
| Blog | persistence_object_identifier, post als Fremdschlüssel | | |
| Post | persistence_object_identifier | | |
OneToMany (1:n) / ManyToOne (n:1) | |
--------------------------------- | |
Hier kann ein Beitrag in genau einem Blog erscheinen | |
@code | |
class Blog { | |
/** | |
* @var \Doctrine\Common\Collections\Collection<\...\Post> | |
* ^---------------^--- Kapselung der Posts in eine Liste <------+ | |
* @ORM\OneToMany(mappedBy="blog") | | |
* ^ ^- gibt den Fremdschlüssel in der Klasse Post an | | |
* +------------- gibt an, dass hier eine Liste von Records erwartet wird | | |
*/ | | |
protected $posts | | |
} | | |
| | |
class Post { | | |
/** | | |
* @var Blog >----| | |
* @ORM\ManyToOne | | |
* ^----- zeigt auf einen Blog, der kann aber auch in anderen Datensätzen verwendet werden! >----+ | |
*/ | |
protected $blog | |
} | |
@endcode | |
Das Beispiel erzeugt 2 Tabellen. | |
| Tabelle | Felder | | |
|:---------|:-------------------------------------------------------| | |
| Blog | persistence_object_identifier | | |
| Post | persistence_object_identifier, blog als Fremdschlüssel | | |
ManyToMany (m:n) | |
---------------- | |
Hier kann ein Beitrag in mehreren Blogs erscheinen! | |
@code | |
class Blog { | |
/** | |
* @var \Doctrine\Common\Collections\Collection<\...\Post> | |
* ^---------------^--- Kapselung der Posts in eine Liste | |
* @ORM\ManyToMany(mappedBy="blogs") | | |
* ^ ^- gibt den Fremdschlüssel in der Klasse Post an | | |
* +------------- gibt an, dass hier eine Liste von Records erwartet wird | | |
*/ | | |
protected $posts; | | |
} | | |
| | |
class Post { | | |
/** | | |
* @var \Doctrine\Common\Collections\Collection<\...\Blog> <----| | |
* ^---------------^--- Kapselung der Blogs in eine Liste | |
* @ORM\ManyToMany(inversedBy="posts") | | |
* ^----- gibt den Fremdschlüssel in der Klasse Blog an | |
*/ | |
protected $blogs; | |
} | |
@endcode | |
Das Beispiel erzeugt 3 Tabellen. | |
| Tabelle | Felder | | |
|:---------|:-------------------------------------------------------| | |
| Blog | persistence_object_identifier | | |
| Post | persistence_object_identifier | | |
| | blogs, posts | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment