所以我有一个奇怪的问题。 我正在 Laravel 和 Angular 中制作应用程序。我正在使用 Eloquent 模型。 现在我有 2 个表,1 个用户表(包含用户信息)和 1 个事件表(包含事件的名称、日期等)。
这 2 个事件通过 oneToMany 关系绑定(bind)(每个事件都属于一个用户)。但现在我希望人们报名参加那个事件。 (前端有一个开关,这样他们就可以申请该事件)。
所以,很多用户会有很多事件。 问题还在于,事件的所有者可以手动设置最大用户数。 (这是我的事件表中的一个tinyINt)。
现在是我的问题了。我怎样才能做到这一点?
我想到的选项: 1.我制作了一个数据透视表 -> 这可能吗?因为用户和事件已经通过一对多关系绑定(bind)了?那么我怎样才能再次将它们与多对多关系绑定(bind)呢? 2. 每次用户签署操作时,我都会将他的 ID 添加到事件表中的数组中。 -> 这可能吗?然后我可以通过检查数组的长度来设置最大用户数?
谢谢 friend 们!
最佳答案
使用数据透视表是此处的正确方法。两个表已经由不同的关系绑定(bind)这一事实不应阻止您。
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();
}
}
如您所见,您可以使用该关系来确定是否仍可以添加订阅者。
关于mysql - Laravel数据库结构 'apply',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32167798/