{"id":7614,"date":"2022-11-09T11:49:42","date_gmt":"2022-11-09T10:49:42","guid":{"rendered":"https:\/\/wata.es\/?p=7614"},"modified":"2026-02-02T09:31:30","modified_gmt":"2026-02-02T08:31:30","slug":"arbeiten-mit-enum-typen-in-symfony-und-postgresql","status":"publish","type":"post","link":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/","title":{"rendered":"Arbeiten mit Enum-Typen in Symfony und PostgreSQL"},"content":{"rendered":"\n<p>Manchmal ben\u00f6tigen wir eine Liste mit g\u00fcltigen Werten f\u00fcr ein bestimmtes Feld in der Datenbank. Zu diesem Zweck k\u00f6nnen wir einen benutzerdefinierten Datentyp in Symfony erstellen und ihn in unseren Entity Mapping Definitionen verwenden. So k\u00f6nnen wir ihn auch f\u00fcr unsere Validierungen nutzen. Dies ist besonders hilfreich bei der Verwendung von PostgreSQL-ENUM-Typen.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Dieses Verfahren ist f\u00fcr PHP-Versionen vor PHP 8.1 gedacht, die den nativen <a rel=\"noreferrer noopener\" href=\"https:\/\/www.php.net\/manual\/es\/language.enumerations.php\" target=\"_blank\">Enum<\/a>-Typ enthalten. Wir k\u00f6nnten die gleiche L\u00f6sung mit wenigen \u00c4nderungen mit Enums oder mit einem anderen bestehenden Ansatz behandeln. Viele Projekte verwenden jedoch immer noch PHP 8.0 oder \u00e4lter und dieser Code ist immer noch n\u00fctzlich f\u00fcr die Anpassung unserer Enum-Typen in PostgreSQL mit Doctrine und Symfony.<\/p>\n\n\n\n<p>Stell dir vor, du hast einen Typ appointment_status als Enum in deinem alten Datenbankschema wie folgt definiert. <\/p>\n\n\n\n<pre id=\"block-9c147536-b016-40cc-9bc7-73da2af413b6\" class=\"wp-block-preformatted\">CREATE TYPE public.appointment_status AS ENUM\n ('Open', 'Invited', 'Assigned', 'Unassigned');<\/pre>\n\n\n\n<p>Und du verwendest diesen Typ in einer bestimmten Spalte: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">CREATE TABLE IF NOT EXISTS public.appointment\n  {\n id integer NOT NULL,\n status public.appointment_status NOT NULL DEFAULT 'Open'::public.appointment_status,\n comment character varying(500)\n  }<\/pre>\n\n\n\n<p>In diesem Artikel erfahren wir also, wie man diese Art von Daten auf einfache Weise handhaben kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Erstellen eines abstrakten Enum-Typs<\/strong><\/strong><\/h2>\n\n\n\n<p>Der erste Schritt ist die Erstellung einer abstrakten Klasse f\u00fcr diese Art von Daten. Mit dieser Abstraktion k\u00f6nnen wir die Klasse f\u00fcr jedes Enum-Feld wiederverwenden. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><?php namespace App\\Infrastructure\\Persistence\\Doctrine\\DBAL; use Doctrine\\DBAL\\Platforms\\AbstractPlatform; use Doctrine\\DBAL\\Types\\Type; abstract class AbstractEnumType extends Type { protected string $schema = \"public\"; protected string $name; protected array $values = array(); public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { return $this-??>schema . \".\\\"\" . $this-&gt;getName() . \"\\\"\"; \n  }  \n \n public function convertToPHPValue($value, AbstractPlatform $platform) \n  {  \n return $value; \n  }  \n \n public function convertToDatabaseValue($value, AbstractPlatform $platform) \n  {  \n if (!in_array($value, $this-&gt;getValidValues())) { \n throw new \\InvalidArgumentException(\"Invalid '\".$this-&gt;name.\"' value.\"); \n  }  \n return $value; \n  }  \n \n public function getName(): string \n  {  \n return $this-&gt;name; \n  }  \n \n public function requiresSQLCommentHint(AbstractPlatform $platform): bool \n  {  \n return true; \n  }  \n \n public function getValidValues(): array \n  {  \n return $this-&gt;values; \n  }  \n \n}  \n <\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Erstellen des Enum-Typs<\/strong><\/h2>\n\n\n\n<p>Nun musst du den spezifischen Enum-Typ erstellen, der die abstrakte Klasse erweitert: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><?php namespace App\\Infrastructure\\Persistence\\Doctrine\\DBAL; class AppointmentStatusType extends AbstractEnumType { protected string $name = 'appointment_status'; protected array $values = []; protected static array $options = array( 'Open', 'Invited', 'Assigned', 'Unassigned' ); function __init() { $this-??>values = self::$options; \n  }  \n \n public function getValidValues(): array \n  {  \n return self::$options; \n  }  \n}  \n <\/pre>\n\n\n\n<p><strong>Tipp<\/strong>: Wenn die Liste zu lang ist, kannst du die Klasse in zwei Dateien aufteilen; die Logik auf der einen Seite und die Werte auf der anderen, so erh\u00e4ltst du besser wartbare Klassen <\/p>\n\n\n\n<pre id=\"block-9c147536-b016-40cc-9bc7-73da2af413b6\" class=\"wp-block-preformatted\"><?php namespace App\\Infrastructure\\Persistence\\Doctrine\\DBAL; USE APP\\Infrastructure\\Persistence\\Doctrine\\DBAL\\Enums\\CitizenshipEnum; class EmployeeCitizenshipType extends AbstractEnumType { protected string $name = 'employee_citizenship'; protected array $values = []; function __init() { $this-??>values = CitizenshipEnum::getValues();\n  }\n public function getValidValues(): array\n  {\n return CitizenshipEnum::getValues();\n  }\n}\nnamespace App\\Infrastructure\\Persistence\\Doctrine\\DBAL\\Enums;\nclass CitizenshipEnum\n{\n protected static array $values = [\n 'Ohne Angabe',\n 'Afghanistan',\n 'Algerien',\n 'Andorra',\n 'Angola',\n '[....]',\n 'Vietnam',\n 'Zentralafrikanische Republik',\n 'Zypern',\n ];\n public static function getValues(): array\n  {\n return self::$values;\n  }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Definieren als Typ in Doctrine<\/strong><\/strong><\/h2>\n\n\n\n<p>An diesem Punkt m\u00fcssen wir Symfony mitteilen, dass wir einen neuen Datentyp haben. Das einzige, was noch aussteht, ist eine Map in Doctrine und wir m\u00fcssen ihr sagen &#8222;Eh, dieser Datentyp ist etwas Besonderes!&#8220;. Bearbeite die doctrine.yml und f\u00fcge diese Zeilen hinzu: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">doctrine: \n dbal: \n\n [\u2026] \n mapping_types: \n appointment_status: appointment_status \n\n \n\n types: \n appointment_status: App\\..\\AppointmentStatusType \n\n <\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Mapping Entit\u00e4t mit benutzerdefiniertem Datentyp<\/strong> <\/strong><\/h2>\n\n\n\n<p>Ja! Doctrine kennt jetzt die einzigen zul\u00e4ssigen Werte f\u00fcr den Status. In unserer XML-Datei f\u00fcr das Mapping von Entit\u00e4ten k\u00f6nnen wir jetzt verwenden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!-- status --&gt;\n&lt;field name=\"status\" type=\"appointment_status\" column=\"status\"&gt;\n    &lt;options&gt;\n        &lt;option name=\"default\"&gt;Open&lt;\/option&gt;\n    &lt;\/options&gt;\n&lt;\/field&gt; <\/pre>\n\n\n\n<p>In unserer Entit\u00e4tsdatei m\u00fcssen wir &#8222;string&#8220; verwenden und uns nicht um den Datentyp k\u00fcmmern&#8230; Doctrine macht alles f\u00fcr uns: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">private string $status; <\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Verwendung von Asserts zur Validierung von Eingaben<\/strong><\/h2>\n\n\n\n<p>Wenn wir nun eine Eingabe mit einem speziellen Datentyp validieren wollen, k\u00f6nnen wir diese Einschr\u00e4nkung mit Symfony\/Validator verwenden. Dies ist n\u00fctzlich f\u00fcr die Validierung von Formularen oder POST-Aufrufen.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">status: \n  - NotBlank: ~ \n  - Choice: { callback: [ \\[..]ProductStatusType, getValidValues] }  <\/pre>\n\n\n\n<p>Und Symfony pr\u00fcft, ob der angegebene Wert in den zugelassenen Werten in unserem benutzerdefinierten Datentyp definiert ist&#8230;. Zauberei! ie Callback-Definition ruft die Methode getValidValues() auf und pr\u00fcft, ob der angegebene Wert ein g\u00fcltiger Wert ist. <\/p>\n\n\n\n<p>Symfony ist gro\u00dfartig! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manchmal ben\u00f6tigen wir eine Liste mit g\u00fcltigen Werten f\u00fcr ein bestimmtes Feld in der Datenbank. Zu diesem Zweck k\u00f6nnen wir einen benutzerdefinierten Datentyp in Symfony erstellen und ihn in unseren Entity Mapping Definitionen verwenden. So k\u00f6nnen wir ihn auch f\u00fcr unsere Validierungen nutzen. Dies ist besonders hilfreich bei der Verwendung von PostgreSQL-ENUM-Typen.<\/p>\n","protected":false},"author":31,"featured_media":15543,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[68,181],"tags":[185,300,189,299],"class_list":["post-7614","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-neuigkeiten","category-technologie","tag-php","tag-php-de","tag-symfony","tag-symfony-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arbeiten mit Enum-Typen in Symfony und PostgreSQL - WATA Factory<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arbeiten mit Enum-Typen in Symfony und PostgreSQL - WATA Factory\" \/>\n<meta property=\"og:description\" content=\"Manchmal ben\u00f6tigen wir eine Liste mit g\u00fcltigen Werten f\u00fcr ein bestimmtes Feld in der Datenbank. Zu diesem Zweck k\u00f6nnen wir einen benutzerdefinierten Datentyp in Symfony erstellen und ihn in unseren Entity Mapping Definitionen verwenden. So k\u00f6nnen wir ihn auch f\u00fcr unsere Validierungen nutzen. Dies ist besonders hilfreich bei der Verwendung von PostgreSQL-ENUM-Typen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"WATA Factory\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/watafactory\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-09T10:49:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-02T08:31:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wata.es\/wp-content\/uploads\/2022\/11\/symfony-DE.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"\u00c1ngel Cardiel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@watafactory\" \/>\n<meta name=\"twitter:site\" content=\"@watafactory\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u00c1ngel Cardiel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/\"},\"author\":{\"name\":\"\u00c1ngel Cardiel\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/person\\\/20fa86a3206ff8e84e5771780c8e48f0\"},\"headline\":\"Arbeiten mit Enum-Typen in Symfony und PostgreSQL\",\"datePublished\":\"2022-11-09T10:49:42+00:00\",\"dateModified\":\"2026-02-02T08:31:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/\"},\"wordCount\":442,\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/symfony-DE.webp\",\"keywords\":[\"php\",\"php\",\"Symfony\",\"symfony\"],\"articleSection\":[\"Neuigkeiten\",\"Technologie\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/\",\"name\":\"Arbeiten mit Enum-Typen in Symfony und PostgreSQL - WATA Factory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/symfony-DE.webp\",\"datePublished\":\"2022-11-09T10:49:42+00:00\",\"dateModified\":\"2026-02-02T08:31:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/symfony-DE.webp\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/symfony-DE.webp\",\"width\":1500,\"height\":800,\"caption\":\"Symfony-Logo mit stilisierten 'sf'-Buchstaben in Wei\u00df auf schwarzem Kreis \u00fcber 'Symfony'-Text\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wata.es\\\/de\\\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wata.es\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arbeiten mit Enum-Typen in Symfony und PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wata.es\\\/#website\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"name\":\"WATA Factory\",\"description\":\"IT Consulting &amp; Outsourcing for your company\",\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wata.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\",\"name\":\"WATA Factory\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"width\":688,\"height\":176,\"caption\":\"WATA Factory\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/watafactory\\\/\",\"https:\\\/\\\/x.com\\\/watafactory\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/wata\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/person\\\/20fa86a3206ff8e84e5771780c8e48f0\",\"name\":\"\u00c1ngel Cardiel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/46b7e0a052526e7f1d6c664755ad7f551dfc3b7dd7ab050e92cddefcb45591bf?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/46b7e0a052526e7f1d6c664755ad7f551dfc3b7dd7ab050e92cddefcb45591bf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/46b7e0a052526e7f1d6c664755ad7f551dfc3b7dd7ab050e92cddefcb45591bf?s=96&d=mm&r=g\",\"caption\":\"\u00c1ngel Cardiel\"},\"sameAs\":[\"http:\\\/\\\/wata.es\"],\"url\":\"https:\\\/\\\/wata.es\\\/de\\\/author\\\/a-cardiel\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arbeiten mit Enum-Typen in Symfony und PostgreSQL - WATA Factory","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/","og_locale":"de_DE","og_type":"article","og_title":"Arbeiten mit Enum-Typen in Symfony und PostgreSQL - WATA Factory","og_description":"Manchmal ben\u00f6tigen wir eine Liste mit g\u00fcltigen Werten f\u00fcr ein bestimmtes Feld in der Datenbank. Zu diesem Zweck k\u00f6nnen wir einen benutzerdefinierten Datentyp in Symfony erstellen und ihn in unseren Entity Mapping Definitionen verwenden. So k\u00f6nnen wir ihn auch f\u00fcr unsere Validierungen nutzen. Dies ist besonders hilfreich bei der Verwendung von PostgreSQL-ENUM-Typen.","og_url":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/","og_site_name":"WATA Factory","article_publisher":"https:\/\/www.facebook.com\/watafactory\/","article_published_time":"2022-11-09T10:49:42+00:00","article_modified_time":"2026-02-02T08:31:30+00:00","og_image":[{"width":1500,"height":800,"url":"https:\/\/wata.es\/wp-content\/uploads\/2022\/11\/symfony-DE.webp","type":"image\/webp"}],"author":"\u00c1ngel Cardiel","twitter_card":"summary_large_image","twitter_creator":"@watafactory","twitter_site":"@watafactory","twitter_misc":{"Verfasst von":"\u00c1ngel Cardiel","Gesch\u00e4tzte Lesezeit":"2\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#article","isPartOf":{"@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/"},"author":{"name":"\u00c1ngel Cardiel","@id":"https:\/\/wata.es\/#\/schema\/person\/20fa86a3206ff8e84e5771780c8e48f0"},"headline":"Arbeiten mit Enum-Typen in Symfony und PostgreSQL","datePublished":"2022-11-09T10:49:42+00:00","dateModified":"2026-02-02T08:31:30+00:00","mainEntityOfPage":{"@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/"},"wordCount":442,"publisher":{"@id":"https:\/\/wata.es\/#organization"},"image":{"@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2022\/11\/symfony-DE.webp","keywords":["php","php","Symfony","symfony"],"articleSection":["Neuigkeiten","Technologie"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/","url":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/","name":"Arbeiten mit Enum-Typen in Symfony und PostgreSQL - WATA Factory","isPartOf":{"@id":"https:\/\/wata.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#primaryimage"},"image":{"@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2022\/11\/symfony-DE.webp","datePublished":"2022-11-09T10:49:42+00:00","dateModified":"2026-02-02T08:31:30+00:00","breadcrumb":{"@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#primaryimage","url":"https:\/\/wata.es\/wp-content\/uploads\/2022\/11\/symfony-DE.webp","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2022\/11\/symfony-DE.webp","width":1500,"height":800,"caption":"Symfony-Logo mit stilisierten 'sf'-Buchstaben in Wei\u00df auf schwarzem Kreis \u00fcber 'Symfony'-Text"},{"@type":"BreadcrumbList","@id":"https:\/\/wata.es\/de\/arbeiten-mit-enum-typen-in-symfony-und-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wata.es\/de\/"},{"@type":"ListItem","position":2,"name":"Arbeiten mit Enum-Typen in Symfony und PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/wata.es\/#website","url":"https:\/\/wata.es\/","name":"WATA Factory","description":"IT Consulting &amp; Outsourcing for your company","publisher":{"@id":"https:\/\/wata.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wata.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/wata.es\/#organization","name":"WATA Factory","url":"https:\/\/wata.es\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/wata.es\/#\/schema\/logo\/image\/","url":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","width":688,"height":176,"caption":"WATA Factory"},"image":{"@id":"https:\/\/wata.es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/watafactory\/","https:\/\/x.com\/watafactory","https:\/\/www.linkedin.com\/company\/wata\/"]},{"@type":"Person","@id":"https:\/\/wata.es\/#\/schema\/person\/20fa86a3206ff8e84e5771780c8e48f0","name":"\u00c1ngel Cardiel","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/46b7e0a052526e7f1d6c664755ad7f551dfc3b7dd7ab050e92cddefcb45591bf?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/46b7e0a052526e7f1d6c664755ad7f551dfc3b7dd7ab050e92cddefcb45591bf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/46b7e0a052526e7f1d6c664755ad7f551dfc3b7dd7ab050e92cddefcb45591bf?s=96&d=mm&r=g","caption":"\u00c1ngel Cardiel"},"sameAs":["http:\/\/wata.es"],"url":"https:\/\/wata.es\/de\/author\/a-cardiel\/"}]}},"_links":{"self":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts\/7614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/comments?post=7614"}],"version-history":[{"count":5,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts\/7614\/revisions"}],"predecessor-version":[{"id":15546,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/posts\/7614\/revisions\/15546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/media\/15543"}],"wp:attachment":[{"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/media?parent=7614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/categories?post=7614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wata.es\/de\/wp-json\/wp\/v2\/tags?post=7614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}