所以我有一个奇怪的问题。 我正在Laravel和Angular中申请。我使用的是Eloquent模型。 现在我有2个表,1个用户表(包含用户信息)和1个事件表(包含事件的名称,日期,...)。
这些2由oneToMany关系绑定(每个事件属于一个用户)。但现在我希望人们报名参加这个活动。 (前端有一个开关,所以他们可以申请参加比赛)。
因此,很多用户会有很多活动。 问题也是,事件的所有者可以手动设置最多#个用户。 (这是我事件表中的一个小小的内容)。
所以现在我的问题。我该怎么办呢?
我想到的选项: 我做了一个数据透视表 - >这可能吗?因为用户和事件已经被一对多的实际绑定了?那么如何再次将它们与多对多的关系绑定呢? 2.每次用户签署操作时,我都会将他的ID添加到事件表中的数组中。 - >这可能吗?然后我可以通过检查数组的长度来设置最大#个用户?
谢谢各位朋友!
答案 0 :(得分:1)
使用数据透视表是正确的方法。这两个表已经受到不同关系约束的事实不应该阻止你。
class Events extends Eloquent
{
public function owner()
{
return $this->belongsTo(App\User::class);
}
public function subscribers()
{
return $this->belongsToMany(App\User::class, 'event_user');
}
public function canAddSubscriber()
{
if ( ! $this->max_users) return true;
return $this->max_users < $this->subscribers()->count();
}
}
如您所见,您可以使用该关系来确定是否仍可以添加订阅者。