2017-02-08 9 views
1

У меня есть 3 таблицы пользователей, Языки и Language_User, как показано ниже:Обновление сводных таблиц с помощью функции поиска типа на дополнительное поле - Laravel

Пользователи

идентификатор

имя

...

Языки

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);

ИЛИ

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'); 
    } 
} 

ответ

0

Вы также можете вручную заполнить сводную таблицу из manytomany отношений.

Создание модели LanguageUser

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

А потом заселить:

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

Является ли это правильный подход? –

+0

@Murlidhar Я не слишком уверен, но это соответствует вашему состоянию. –

 Смежные вопросы

  • Нет связанных вопросов^_^