Laravel 5与3个表的关系

时间:2016-01-01 00:18:54

标签: laravel eloquent

我有3张桌子:

分类

    id      |     name      
-----------------------------------
    1       |      Men >80kg   
-----------------------------------
    2       |      Women >80kg   
-----------------------------------
    3       |      Team Men >80kg   
-----------------------------------

Category_Tournament(列出锦标赛中可用的所有类别)

id | category_id | tournament_id      
---------------------------
1  |    1       |       2   
---------------------------
2  |    2       |       2   
---------------------------
3  |    3       |       2   
---------------------------
4  |    4       |       2   
---------------------------

Category_Tournament_User(用户注册的类别)

id |  category_tournament_id  |       user_id       
-----------------------------------------------
1  |              1           |        201 
-----------------------------------------------
2  |              3           |        202
-----------------------------------------------

我尝试在用户选择参与类别

时同步Category_Tournament_User
$categories = $request->get('categories_to_register');
$tournament->categories_user()->sync($categories);

我的关系ManyToMany是

class Tournament extends Model
{
...
 public function categories_user()
 {
     return $this->belongsToMany('App\Category', 'category_tournament_user',  'user_id','category_tournament_id');
 }
}

它正在同步,但不是很好,而不是插入user_id,它插入了tournament_id,我想这是因为我从锦标赛模型中调用它。

我尝试改变关系的顺序

user->tournament->category or
tournament->user->category

但是当用户没有注册类别时,

 user->tournament or
 tournament->user

将为null,因此我无法调用 - > category

我该如何解决这个烂摊子?

0 个答案:

没有答案