Laravel与多种选择的多对多关系

时间:2017-08-29 05:25:29

标签: laravel

我是Laravel的新手并且正试图建立多对多的关系(至少我认为这就是我需要的)

基本上每个用户都有偏好,有7种类型的偏好,有些偏好可以有多个值,有些只有一个值 以下是 user_pref_options

  • project_type | (将是视图上的复选框,并有多个选项)
  • 最爱| (用户可以有多个这是另一个表的外键)
  • 标语| (将是视图上的复选框,并有多个选项)
  • bedroom_min | (每个用户一个值)
  • bedroom_max | (每个用户一个值)
  • sf_min | (每个用户一个值)
  • sf_max | (每个用户一个值)

以下是 user_pref表的内容

| id | user_id | pref_option_id |价值|

| --- | --- | --- | --- |

| 1 | 1 | 1 | 5 |

| 2 | 1 | 1 | 3 |

| 3 | 1 | 2 | 364 |

| 4 | 1 | 2 | 201 |

| 5 | 1 | 2 | 9 |

| 6 | 1 | 2 | 244 |

| 7 | 1 | 2 | 192 |

| 8 | 1 | 2 | 292 |

| 9 | 1 | 4 | 1 |

| 10 | 1 | 11 | 1 |

| 11 | 1 | 12 | 6 |

| 12 | 1 | 13 | 1628 |

| 13 | 1 | 14 | 9134 |

因此,1位用户会注意到某些选项类型有多个

抱歉,在我提出问题之前,我必须要有很多背景知识。

我希望能够使用Eloquent将用户首选项连接到用户,并且无法确定应该采用哪种方式..

这是我尝试过的事情

//User model
public function prefs(){
    return $this->belongsToMany('App\Pref', 'pref_user', 'user_id', 'pref_id');
}

//Pref Model
public function user()
{
    return $this->belongsToMany('App\Pref', 'pref_user', 'user_id', 'pref_id');
}

我看了here

我希望能够获得所有首选项并在视图中显示它们 (我现在把它粘贴在这里,我不会让你感到烦恼)

我的挣扎是,有些偏好有多个选项,有些则有单一选项。如何检索值

也许我需要将每种偏好类型与自己的模型分开,但这似乎有点过分我愿意接受建议

Screenshot of View

1 个答案:

答案 0 :(得分:1)

sync http request module表使您很难区分您的prefs并且还设置了大量开销数据。 因此,您可以在user_pref模型或分离的模型中设置单值prefs(bedroom_minbedroom_maxsf_minsf_max),并使用{检索它们{1}}。对于其他prefs,user关系更好,更灵活。 最后,当您获取用户模型时,您将获得模型及其关系。