Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnis Frage zu attach

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Laravel] Verständnis Frage zu attach

    Hallo und Guten Morgen,

    mir fehlt etwas Verständnis für folgendes Thema.


    Ich würde gern in einer Pivot Table eine user_id und eine verein_id eintragen.

    ABER der Ursprung der beiden id´s ist die users table.



    User.php
    PHP-Code:
    public function vereine () {

          return 
    $this->belongsToMany('App\User''users_verein''user_id''verein_id');
        }

        public function 
    addVerein(User $user)
          {

          
    $this->vereine()->attach($user->id);
          } 
    VereinController.php
    PHP-Code:
        public function addVerein($VereinId)
          {

          
    $Verein User::find($VereinId);
          
    $Verein->addverein($Verein);

          } 
    Über die Route
    PHP-Code:
    Route::get('meineVereine/{VereinId}/attach' ,'VereinController@addVerein'); 
    kann ich dann eine selektierte Id einer vereins übergeben.

    Ich bin aber grade etwas drucheinander. Wann ich was an der eigentlichen User binden muss und wann das passiert. WEIL, ich übergebe ja eigentlich nur den Verein, wo kommt der User her?
    In der Datenbank landet auch nur die Verein id in beiden Spalten.

  • #2
    Hi. Erkläre erstmal welche Beziehungen du aufbauen willst. hasOne,hasMany,manyToMany??

    Kommentar


    • #3
      Hi,
      das wäre Many to Many, also eine Pivot Tabelle dazwischen.

      in der ich gern die beiden Id‘s sichern mag

      Kommentar


      • #4
        Okay, aber warum ManytoMany? Ein User ist in einem Verein, oder in mehreren. Oder möchtest du was bestimmtes?

        Kommentar


        • #5
          Ein user kann in mehreren Vereinen sein.

          ich steige da mit der Logik nicht durch, weil ja alles eine Tabelle ist.
          User und Vereien.

          obwohl das nicht ganz optimal scheint. Aber es geht ja auch erstmal um das verstehen.

          Kommentar


          • #6
            Zitat von Matze1708 Beitrag anzeigen
            Ein user kann in mehreren Vereinen sein.

            ich steige da mit der Logik nicht durch, weil ja alles eine Tabelle ist.
            User und Vereien.

            obwohl das nicht ganz optimal scheint. Aber es geht ja auch erstmal um das verstehen.
            Du hast 2 Models. User und Verein. Und du hast 2 Tables ( Users + Vereine ). Ein User kann in mehreren Vereinen sein. Es ist also OneToMany

            Kommentar


            • #7
              Ja, das wäre das bessere Model, da hast du Recht.

              ich wollte mir als Anfänger erstmal sparen, 2 guards anzulegen mit allen logins.

              weil der Verein auch Dinge bekommt zum Verwalten.


              oder gibt es ggf noch andere Möglichkeiten dies abzubilden?

              Kommentar


              • #8
                User Model:
                Code:
                <?php
                
                namespace App;
                
                
                class User
                {
                  function myVerein {  
                  return $this->hasMany('App\Verein','user_id');
                   }
                }
                Wenn du jetzt einen User finden möchtest mit seinen Vereinen:
                Im Controller.
                Code:
                public function show {
                
                return User::find(1)->myVerein;         <-- Die Funktion einfach anhängen.
                }

                Kommentar


                • #9
                  Sprechen wir von den gleichen?

                  aktuell habe ich ja nur die Tabelle users bzw das Model User


                  also quasi eine Beziehung freund zu freunde.

                  sowas habe ich mal über Laravel gefunden.

                  alles in einer Tabelle

                  Kommentar


                  • #10
                    Ach du hast alles in der gleichen Tabelle? In der Users Tabelle, eine Spalte "Verein?". Ich weiß ja nicht was du machen möchtest

                    Kommentar


                    • #11
                      Ich habe alles in der Tabelle Users.
                      also das gleiche ID wie bei den Usern ist es auch für die Vereine.
                      jedoch habe ich ein Feld „isVerein“ welches auf 1 steht wenn es ein Verein ist.

                      so war jetzt erstmal grob meine Testweise überlegung.

                      Kommentar


                      • #12
                        Okay, bitte unbedingt mehr zu PHP lesen. Laravel ist nichts anders.
                        Also wenn es die selbe Tabelle ist, dann brauchst du keine Realtions. Relationsships verwendet man nur, wenn du mehere Tabellen über einen Fremdschlüssel und Localschlüssel verbinden möchtest.

                        In deinem Fall wäre es jetzt noch einfacher. Nehmen wir an du möchtest eine User Liste mit dem Verein laden:

                        Im Controller:

                        Code:
                        public function index(){
                        
                        $users = User::all(); 
                        return view('index',compact('users'));     
                        }
                        In deiner index.blade
                        Code:
                        @foreach($users as $user)
                        $user->name
                        $user->verein
                        @endforeach

                        Kommentar


                        • #13
                          Ok, soweit klar.

                          Aber mir ist noch unklar, wie ich sagen kann, dass user 1 mitglied von verein 1,2,3,4 ist.

                          Das kommt ja aktuell aus dem controller von eben nicht raus.
                          a da müsste ich über where(isverein, 1) gehen. Dann habe ich aber auch nur alle Vereine aber nicht die eines User.
                          Diese fremdkeys muss ich ja irgendwo vorhalten.
                          Oder?

                          Kommentar


                          • #14
                            Zitat von Matze1708 Beitrag anzeigen
                            Ok, soweit klar.

                            Aber mir ist noch unklar, wie ich sagen kann, dass user 1 mitglied von verein 1,2,3,4 ist.

                            Das kommt ja aktuell aus dem controller von eben nicht raus.
                            a da müsste ich über where(isverein, 1) gehen. Dann habe ich aber auch nur alle Vereine aber nicht die eines User.
                            Diese fremdkeys muss ich ja irgendwo vorhalten.
                            Oder?
                            Wenn du das möchtest, dann musst es so machen wie wir es oben besprochen hatten. Da brauchst du eine extra Tabelle für Vereine. Und eine Relation OneToMany.

                            Kommentar


                            • #15
                              Ja das dachte ich mir.

                              Kommentar

                              Lädt...
                              X