{"id":1642,"date":"2017-07-21T21:12:19","date_gmt":"2017-07-21T19:12:19","guid":{"rendered":"https:\/\/vielhuber.de\/?p=1642"},"modified":"2020-05-08T02:11:44","modified_gmt":"2020-05-08T00:11:44","slug":"laravel-arbeit-mit-eloquent-relationships","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/","title":{"rendered":"Laravel: Arbeit mit Eloquent Relationships"},"content":{"rendered":"<p>Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit <a href=\"https:\/\/laravel.com\/docs\/master\/eloquent-relationships\" target=\"_blank\" rel=\"noopener noreferrer\">Eloquent Relationships<\/a> sollte man sich beim Aufruf dynamischer Variablen (mit Hilfe der <a href=\"http:\/\/php.net\/manual\/de\/language.oop5.magic.php\" target=\"_blank\" rel=\"noopener noreferrer\">Magischen Methoden<\/a> von PHP) dar\u00fcber im Klaren sein, dass die Instanzen der Models neue \u00c4nderungen nicht reflektieren, sondern beim ersten Aufruf dauerhaft zwischenspeichern.<\/p>\n<p><!--more--><\/p>\n<p>Bei folgendem Beispiel verh\u00e4lt es sich wie erwartet:<\/p>\n<p class=\"githubgist\" data-gist-file=\"pitfall.php\">6d32588c32f080ef1896633f261e1e14<\/p>\n<p><strong>$model-&gt;col<\/strong> liefert auch nach der \u00c4nderung stets den alten Wert (weil der Wert mit <strong>Model::find(42)<\/strong> anfangs ein einziges Mal geholt und dann gespeichert wurde). Spricht man nun mit <strong>$model-&gt;dependant_table<\/strong> eine andere, verbundene Tabelle an, k\u00f6nnte man erwarten, dass dessen zweiter Aufruf den neuen Wert liefert:<\/p>\n<p class=\"githubgist\" data-gist-file=\"pitfall2.php\">6d32588c32f080ef1896633f261e1e14<\/p>\n<p>Das ist ebenfalls nicht der Fall (<strong>$dependant_table = $model-&gt;dependant_table<\/strong> speichert komplett die abh\u00e4ngige Tabelle zwischen). Um einen aktuellen Wert zu erhalten, ruft man die explizit definierte Funktion <strong>dependant_table()<\/strong>\u00a0auf:<\/p>\n<p class=\"githubgist\" data-gist-file=\"solution.php\">6d32588c32f080ef1896633f261e1e14<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf dynamischer Variablen (mit Hilfe der Magischen Methoden von PHP) dar\u00fcber im Klaren sein, dass die Instanzen der Models neue \u00c4nderungen nicht reflektieren, sondern beim ersten Aufruf dauerhaft zwischenspeichern.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"gtbabel_prevent_lngs":"","gtbabel_alt_lng":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-1642","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>Laravel: Arbeit mit Eloquent Relationships &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel: Arbeit mit Eloquent Relationships &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-21T19:12:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-08T00:11:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"552\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:site\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"Laravel: Arbeit mit Eloquent Relationships\",\"datePublished\":\"2017-07-21T19:12:19+00:00\",\"dateModified\":\"2020-05-08T00:11:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/\"},\"wordCount\":171,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/\",\"name\":\"Laravel: Arbeit mit Eloquent Relationships &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"datePublished\":\"2017-07-21T19:12:19+00:00\",\"dateModified\":\"2020-05-08T00:11:44+00:00\",\"description\":\"Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/laravel-arbeit-mit-eloquent-relationships\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel: Arbeit mit Eloquent Relationships\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/\",\"name\":\"Vielhuber David\",\"description\":\"Full-Stack Developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vielhuber.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\",\"name\":\"David\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"width\":700,\"height\":552,\"caption\":\"David\"},\"logo\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/vielhuber\"]}]}<\/script>","yoast_head_json":{"title":"Laravel: Arbeit mit Eloquent Relationships &#060; Vielhuber David","description":"Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf","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:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/","og_locale":"de_DE","og_type":"article","og_title":"Laravel: Arbeit mit Eloquent Relationships &#060; Vielhuber David","og_description":"Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf","og_url":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/","og_site_name":"Vielhuber David","article_published_time":"2017-07-21T19:12:19+00:00","article_modified_time":"2020-05-08T00:11:44+00:00","og_image":[{"width":700,"height":552,"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","type":"image\/jpeg"}],"author":"David","twitter_card":"summary_large_image","twitter_creator":"@vielhuber","twitter_site":"@vielhuber","twitter_misc":{"Verfasst von":"David","Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"Laravel: Arbeit mit Eloquent Relationships","datePublished":"2017-07-21T19:12:19+00:00","dateModified":"2020-05-08T00:11:44+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/"},"wordCount":171,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/","url":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/","name":"Laravel: Arbeit mit Eloquent Relationships &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"datePublished":"2017-07-21T19:12:19+00:00","dateModified":"2020-05-08T00:11:44+00:00","description":"Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/laravel-arbeit-mit-eloquent-relationships\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"Laravel: Arbeit mit Eloquent Relationships"}]},{"@type":"WebSite","@id":"https:\/\/vielhuber.de\/#website","url":"https:\/\/vielhuber.de\/","name":"Vielhuber David","description":"Full-Stack Developer","publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vielhuber.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef","name":"David","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","width":700,"height":552,"caption":"David"},"logo":{"@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg"},"sameAs":["https:\/\/x.com\/vielhuber"]}]}},"_links":{"self":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts\/1642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/comments?post=1642"}],"version-history":[{"count":8,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts\/1642\/revisions"}],"predecessor-version":[{"id":2701,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts\/1642\/revisions\/2701"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/media?parent=1642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/categories?post=1642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/tags?post=1642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}