Skip to content

Instantly share code, notes, and snippets.

@kaystrobach
Last active December 23, 2015 18:29
Show Gist options
  • Save kaystrobach/6675601 to your computer and use it in GitHub Desktop.
Save kaystrobach/6675601 to your computer and use it in GitHub Desktop.
FLOW Documentation
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