1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Laravel Eloquent Relationsships

    • Erledigt
  • PixelPatron
  • 21. Dezember 2023 um 19:44
  • Geschlossen
  • Erledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • PixelPatron
    Punkte
    4.131
    Beiträge
    733
    • 21. Dezember 2023 um 19:44
    • #1

    Hey,

    wie der TItel schon aussagt bräuchte ich Hilfe bei einem bzw zwei Model in meiner Laravel App. Eigentlich ein Kinderspiel aber aus irgendeinem Grund habe ich den Überblick verloren und würde mich freuen wenn mir kurz jemand beim denken helfen kann ->

    Ich habe 2 Models, Articles und Categorys - in der Article Tabelle .. wenn wunderst speichere ich alle Article .. in der Category Tabelle ebend alle Kategorien. Ich komme einfach nicht mehr dazu die 2 Tabellen so zu verbinden das ich zu jeder Categorys auch die entsprechenden Article dazu bekomme.

    Oft gesehen oft gemacht und dann vergessen .. vielleicht weiss jemand ne kurze Denkhilfe ;) <3

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 21. Dezember 2023 um 20:56
    • #2

    Meinst du eine hasMany bzw. belongsTo Relation?

    Da jetzt am Handy, Mal eben fix kopiert von mir:

    Code
        public function category(): BelongsTo
            {
                    return $this->belongsTo(Category::class);
                        }

    Dann könntest du in dem Fall einfach $post->category(); das Model der Kategorie erhalten bei einem post.

  • PixelPatron
    Punkte
    4.131
    Beiträge
    733
    • 21. Dezember 2023 um 21:11
    • #3

    Also die Abhängigkeit in den Modellen funktioniert das Problem was ich habe ist ich bekomme die Abfrage in die views nicht rein.

    Was ich aktuell versuche: Habe eine Seite auf der stehen ALLE Kategorien die es so gibt. Unabhängig von Post Type also egal ob es ein Artikel ist oder eine Referenz zb. Jetzt rufe ich die Seite auf: http://www.example.de/categorys/{slug} .. sagen wir als Slug einfach mal allgemein.

    Lara geht also los und schau ob sie den Slug in der Kategorie Tabelle finden kann wenn ja dann soll sie mir bitte

    Kategorienamen -> Beschreibung

    Post 1

    Post 2

    anzeigen.

    Laut meinem Screenshot stimmt meine Abfrage aber ich bekomme keinen Zugriff auf die Daten .. entweder gibt er mir einen Eloquent Fehler aus oder zeigt null an .. :(

    Danke für deine Hilfe ;)

    Nachtrag um 21:27 Uhr:

    Code
    <x-app-layout>
        <div class="bg-primary-c p-4 border border-primary-custom" id="articles_wrapper">
            <h1>{{ __('categorys.PageTitle') }}</h1>
            <section class="content">
                @foreach($categorys as $category)
                    {{ $category->name }}
                @endforeach
            </section>
        </div>
    </x-app-layout>

    Das ist meine Bladeview .. erstmal nur so weit das ich quasi den Kategorie Namen hinbekomme aber selbst den gibt er mir nicht aus!

    Controller:

    Code
    $categorys = Category::with('articles')->where('slug',$slug)->first();
    //dd($categorys);
    return view('categorys.show',compact('categorys'));

    Ich denke das der Fehler in der Abfrage liegt .. :(

    Bilder

    • Screenshot_1.png
      • 13,3 kB
      • 470 × 288

    Einmal editiert, zuletzt von PixelPatron (21. Dezember 2023 um 21:28)

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 21. Dezember 2023 um 21:54
    • #4

    Ich hab gerade noch etwas Probleme dein Anliegen wohl zu verstehen.

    Willst du eine Übersicht wo alle Kategorien aufgelistet sind? Oder meinst du das du alle Artikel die der Kategorie zugewiesen sind haben willst?

  • PixelPatron
    Punkte
    4.131
    Beiträge
    733
    • 21. Dezember 2023 um 21:57
    • #5

    Also .. ich habe eine Auflistung aller Kategorien unter http://domain.de/categorys -> funktioniert einwandfrei

    Jetzt möchte ich gerne unter http://domain.de/categorys/{slug} (im Test allgemein) die jeweilige Kategorie MIT allen Posts haben ..

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 21. Dezember 2023 um 22:13
    • #6

    Ich gehe jetzt einfach von dem Teil des Codes aus den ich kenne:

    PHP
    @foreach($categories->posts())
       // Deine Template Code
    @endforeach

    Kleiner Tipp übrigens, mit @lang gibt's auch eine Blade Direktive für i18n :)

  • PixelPatron
    Punkte
    4.131
    Beiträge
    733
    • 21. Dezember 2023 um 22:15
    • #7

    Den letzten satz verstehe ich nicht ^^ bin mir bewusst das es eine übersetzung gibt aber wie kommt du drauf das ich das nicht nutze? ^^

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 21. Dezember 2023 um 22:24
    • #8

    Von da XD:

    Code
    <h1>{{ __('categorys.PageTitle') }}</h1>

    War auch nur als Tipp gemeint, war mir damals immer lieber die Blade Direktive statt es über Echos zu machen.

  • PixelPatron
    Punkte
    4.131
    Beiträge
    733
    • 21. Dezember 2023 um 22:29
    • #9

    Achsoooo meinst du das :D haha ja das stimmt .. ich sitze aber wie gesagt schon seit Tagen an dem Code und klatsche den da grade so rein. Muss später nochmal drüber und alles ändern was mist aussieht.

    Hast recht aber am ende des tages ist wichtig das es übersetzt wird :D Danke für den Tipp ;)

    Hier findet ihr die Lösung und falls es dazu Fragen gibt einfach im Forum ein neues Thema eröffnen. DANKE an Syntafin für die Denkstütze :) https://gist.github.com/evarioooo/a4ee…be7cf3a32928ace

    4 Mal editiert, zuletzt von PixelPatron (25. Dezember 2023 um 19:42)

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 25. Dezember 2023 um 19:55
    • #10

    Kleiner Tipp übrigens, für deinen Controller, sieht schöner aus und ist einfacher zu warten:

    PHP
    public function show(ArticleCategorys $category)
    {
      
    	return view('categorys.show', [
    		'categories' => $category
    	]);
    }
  • PixelPatron
    Punkte
    4.131
    Beiträge
    733
    • 25. Dezember 2023 um 20:19
    • #11

    Gibt's denn dazu vor oder Nachteile gegenüber meinem Code? Nur aus Neugier.

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 26. Dezember 2023 um 02:49
    • #12

    compact() ist eher dafür gedacht mehrere Arrays zu Gruppieren.

    Ja dadurch kann man mit einem Aufruf auch eben mehrere Objects und Arrays an eine View übergeben, macht sich damit aber auch den Code schwerer lesbar, da man zB nicht bestimmen kann unter welcher Variable etwas im View verfügbar wird bzw. man fügt einen weiteren Cast der Attribute evtl. durch (Object -> Array zB).

  • Informatik-Forum
    Punkte
    110
    Beiträge
    22
    • 24. Mai 2024 um 13:00
    • #13

    Das Thema wurde als erledigt markiert und wird somit geschlossen.

  • Informatik-Forum 24. Mai 2024 um 13:00

    Hat das Thema geschlossen.
  • Informatik-Forum 24. Mai 2024 um 15:35

    Hat das Label Erledigt hinzugefügt.

  1. Datenschutzerklärung
  2. Impressum