2017-02-13 35 views
0

我有表用戶如何可以通過1個請求填2樞軸表laravel

class User extends Authenticatable 
{ 
    use Notifiable; 

    protected $guarded = ['group_c', 'group_s', 'categories']; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function groups() 
    { 
     return $this->belongsToMany('App\Group'); 
    } 

    public function categories() 
    { 
     return $this->belongsToMany('App\Category'); 
    } 
} 

這個表有關係「多對多」至2個anoter表:組

class Group extends Model 
{ 
    public function users() 
    { 
     return $this->belongsToMany('App\User'); 
    } 
} 

和類別

class Category extends Model 
{ 
    public function Users() 
    { 
     return $this->belongsToMany('App\User'); 
    } 
} 

我從Post請求中取數據,並將它們放到Users表中,但'group' 字段我寫入'grou p_user」數據透視表,在我的控制器:

class UserController extends Controller 
{ 

    public function create_user(CrateNewUser $request) 
    { 
     //dd(Request::all()); 
     if (Request::input('user_type') == '1') { 
      $groups = Request::input('group_c'); 
      $categories = Request::input('categories'); 
      User::create(Request::all())->groups()->attach($groups); 
     } elseif (Request::input('user_type') == '2') { 
      $groups = Request::input('group_s'); 
      $categories = Request::input('categories'); 
      User::create(Request::all())->groups()->attach($groups); 
     } 

     return $this->manage_users(); 
    } 
} 

,但我需要也從另一個後場寫入數據‘通過一個SQL請求類別’到另一個透視表categories_user,我可怎麼辦呢?

+0

是'CrateNewUser'表單請求? –

+0

您的 - > groups() - > attach($ groups)試圖從表單中附加一個字段。你應該首先創建一個組模型,也許使用Group :: find($ groups) – Mei

+0

@Mei如果'Request :: input('categories')'返回一個id或一個id數組,那麼你不需要。 –

回答

1

爲了使用它們的ID,你需要使用同步()方法用戶鏈接到一組的組/類別。它將更新數據透視表,以便僅鏈接已同步的記錄。

下應該做的伎倆:

$user = User::create(Request::all()); 
$user->groups()->sync($groups); 
$user->categories()->sync($categories); 
+0

是的,它工作正常)謝謝 –