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 native
language_id as 3
eingeben (sagen wir mal)
ähnlich, if type is learn
language_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');
}
}
Ist es ein richtiger Ansatz? –
@Murlidhar Ich bin nicht sicher, aber es passt zu Ihrem Zustand. –