2017-11-30 24 views
0

多対多の関係を更新する方法を教えてもらえますか?私はタスクを持っている、ユーザーは多くのタスクを持つことができますし、タスクは多くのユーザーに(多くの場合、多くの)することができます、私が達成したいのは、更新フォームの管理者が特定のタスクに複数のユーザーを割り当てることができます。これは、これは私のコントローラであるHTML複数選択入力多対多関係の日付を更新する方法

を介して行われます:

public function index() 
{ 
    // this is in main view 
    $tasks=Task::all()->load('users'); 
    $userLogin_id=Auth::user()->id; 
    $users=User::all()->where('id','!=',$userLogin_id); 
    return view('adminUser.index',compact('tasks','users')); 
} 


public function store(Request $request) 
{ 
    // to create new task and for who it 
    $task =Task::create($request->all()); 
    $userId=$request['employee']; 
    $task->users()->attach($userId); 
    return back(); 
} 

public function edit($task_id) 
{ 
    //to go to view that has update code 
    $task=Task::find($task_id)->load('users'); 
    $userLogin_id=Auth::user()->id; 
    $users=User::all()->where('id','!=',$userLogin_id); 

    return view('adminUser.edit',compact('task','users')); 
} 

public function update(Request $request, $task_id) 
{ 
    //to update task 
    $user_id=$request['employee']; 
    Task::where('id',$task_id) 
     ->update(['title'=>$request['title'], 
        'description'=>$request['description'], 
        'status'=>$request['status'], 
        'file_path'=>$request['file_path']]); 
    //what i can do complete this method if it is correct 
    return redirect('/admin'); 
} 

この私のユーザモデル:

public function tasks(){ 
    return $this->belongsToMany('App\Task','Todos','user_id','task_id'); 
} 

この私のタスクモデル:あなたが意味

public function users(){ 
    return $this->belongsToMany('App\User','todos','task_id','user_id'); 
} 
+0

更新アクションでは、 '$ request ['employee'];'ユーザーの配列ですか? – YouneL

+0

https://laravel.com/docs/5.5/eloquent-relationships#updating-many-to-many-relationships –

答えて

0

リレーションシップを使用してテーブルを変更しようとしているときに、親/兄弟テーブルを更新する必要があります。

ドキュメントはこちらです。

https://laravel.io/forum/10-24-2014-update-two-or-more-table-with-relations

あなたが実際にポインタを使用することができます。

例えば、

は、我々は2つのモデル、User and UserAddress、そのユーザーは多くのアドレスを持って検討し、ユーザーを更新中uはfunction address()

$this->hasMany関係をバインドを持って、あなたが実際にこれを行うことができます。

foreach($user->address as $index => $address){ 
    $address->update(['updated_at',Carbon::now()); 
} 

私はこれがあなたが探していることを望みます。