Laravel数据库结构'适用'

时间:2015-08-23 14:36:01

标签: mysql database laravel eloquent

所以我有一个奇怪的问题。 我正在Laravel和Angular中申请。我使用的是Eloquent模型。 现在我有2个表,1个用户表(包含用户信息)和1个事件表(包含事件的名称,日期,...)。

这些2由oneToMany关系绑定(每个事件属于一个用户)。但现在我希望人们报名参加这个活动。 (前端有一个开关,所以他们可以申请参加比赛)。

因此,很多用户会有很多活动。 问题也是,事件的所有者可以手动设置最多#个用户。 (这是我事件表中的一个小小的内容)。

所以现在我的问题。我该怎么办呢?

我想到的选项: 我做了一个数据透视表 - >这可能吗?因为用户和事件已经被一对多的实际绑定了?那么如何再次将它们与多对多的关系绑定呢? 2.每次用户签署操作时,我都会将他的ID添加到事件表中的数组中。 - >这可能吗?然后我可以通过检查数组的长度来设置最大#个用户?

谢谢各位朋友!

1 个答案:

答案 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();
    }
}

如您所见,您可以使用该关系来确定是否仍可以添加订阅者。