[英]Updating Pivot table by searching type on additional field - Laravel
I have 3 tables Users, Languages and Language_User as shown below: 我有3个表Users,Languages和Language_User,如下所示:
id ID
name 名称
... ...
id ID
language 语言
id ID
user_id 用户身份
language_id LANGUAGE_ID
type('learn','native') 键入(“学习”,“天然”)
I would like to update language_id for both the type but depending on the type. 我想更新两种类型的language_id,但取决于类型。
So, if $user = User::find($id); and type is native
所以,如果
$user = User::find($id); and type is native
$user = User::find($id); and type is native
enter language_id as 3
(let's say) $user = User::find($id); and type is native
输入language_id as 3
(让我们说)
similarly, if type is learn
enter language_id as 4
(let's say) which comes from the form of type PATCH. 类似地,
if type is learn
, if type is learn
输入language_id as 4
(假设)来自PATCH类型的形式。
I dont get it how to use this and add extra check for type: $lang = User::find($id)->languages()->updateExistingPivot($languageId, $attributes);
我不知道如何使用它并添加类型的额外检查:
$lang = User::find($id)->languages()->updateExistingPivot($languageId, $attributes);
OR 要么
App\User::find(1)->languages()->save($language, ['language_id' => $learn]);
How to check for type in pivot table before overriding the data. 如何在覆盖数据之前检查数据透视表中的类型。
I tried this: 我试过这个:
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');
}
}
You can also manually populate the pivot table of manytomany relations. 您还可以手动填充manytomany关系的数据透视表。
Create Model LanguageUser 创建模型语言用户
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class LanguageUser extends model
{
protected $fillable = ['user_id','language_id','type'];
}
And then populate: 然后填充:
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{//}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.