1
我有3级表的用户,语言和Language_User,如下图所示:更新透视表 - Laravel
用户
ID
名
...
语言
id
语言
Language_User
ID
USER_ID
LANGUAGE_ID
型( '学习', '天然')
我想更新LANGUAGE_ID为这两种类型,但取决于类型。
所以,如果$user = User::find($id); and type is native
进入language_id as 3
(比方说)
同样,if type is learn
进入language_id as 4
(比方说),它来自于类型片的形式。
我不明白它是如何使用它并添加额外的检查类型:$lang = User::find($id)->languages()->updateExistingPivot($languageId, $attributes);
OR
App\User::find(1)->languages()->save($language, ['language_id' => $learn]);
如何重写数据之前您在数据透视表型。
我尝试这样做:
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');
}
}
它是一个正确的做法? –
@Murlidhar我不太确定,但它适合你的条件。 –