2017-02-08 1 views
1

Ich habe 3 Tabellen Benutzer, Sprachen und Language_User wie unten dargestellt:Aktualisierung Pivot-Tabelle nach Typ auf zusätzliches Feld Suche - Laravel

Benutzer

id

Name

...

Sprachen

id

Sprache

Language_User

id

User_id

language_id

Typ ('lernen', 'native')

Ich möchte language_id aktualisieren für beide vom Typ aber abhängig vom Typ.

Also, wenn $user = User::find($id); and type is nativelanguage_id as 3 eingeben (sagen wir mal)

ähnlich, if type is learnlanguage_id as 4 eingeben (sagen wir mal), die von der Form des Typs PATCH kommt.

ich nicht, dass es, wie dies zu nutzen und zusätzliche Überprüfung für Typen hinzufügen: $lang = User::find($id)->languages()->updateExistingPivot($languageId, $attributes);

ODER

App\User::find(1)->languages()->save($language, ['language_id' => $learn]); 

Wie für Typen in Pivot-Tabelle zu überprüfen, bevor die Daten zu überschreiben.

Ich versuchte dies:

public function settings_update(Request $request, $id) 
{ 
    $rules = array(
     'learn'     => 'required', 
     'native'     => 'required', 
     'search_status'   => 'required' 
    ); 

    $validator = Validator::make(Input::all(), $rules); 

    if ($validator->fails()) { 

     return Redirect()->back()->withErrors($validator); 

    } else { 

     $user = User::find($id); 
     $user ->search_status  = Input::get('search_status'); 
     $user ->save(); 

     $learn_id = Input::get('learn'); 
     $teach_id = Input::get('teach'); 

     $lang1 = User::find($id)->languages()->wherePivot('type', 'learn')->attach($learn_id); 

     $lang2 = User::find($id)->languages()->wherePivot('type', 'native')->attach($teach_id); 

    return redirect('/users/settings'); 
    } 
} 

Antwort

0

Sie können auch manuell die Pivot-Tabelle von ManyToMany Beziehungen füllen.

Modell erstellen LanguageUser

<?php 
    namespace App; 
    use Illuminate\Database\Eloquent\Model; 
    class LanguageUser extends model 
    { 
     protected $fillable = ['user_id','language_id','type']; 
    } 

Und dann bevölkert:

public function store(Request $request,$id) 
{ 
    if($result->type=='native') 
    { 
     $pivot=new LanguageUser(); 
     $pivot->user_id=$id; 
     $pivot->language_id=3; 
     $pivot->type='native'; 
     $pivot->save(); 
    } 

    else if($result->type=='learn') 
    {    
     $pivot=new LanguageUser(); 
     $pivot->user_id=$id; 
     $pivot->language_id=4; 
     $pivot->type='learn'; 
     $pivot->save(); 
    } 
    else{//} 
} 
+0

Ist es ein richtiger Ansatz? –

+0

@Murlidhar Ich bin nicht sicher, aber es passt zu Ihrem Zustand. –

Verwandte Themen