【发布时间】:2018-12-02 03:41:13
【问题描述】:
我有在会议注册的背景。如果是免费注册,则注册只有一步。如果是付费注册,则有两个步骤。
注册的第一步包括用户填写注册表,点击“存储注册”按钮后,信息将存储在数据库中,注册表的“状态”列始终存储值“我”(不完整)。
如果是免费注册,则无需额外步骤。
但如果它是付费注册,则还有另一个步骤。在此步骤 2 中,用户需要在会议开始日期之前支付注册费用。支付注册费后,注册表的“状态”列保持值为“C”(完成)。
怀疑:
如果是付费注册,则在step1之后需要向用户开具形式发票,而在step2之后,即在付款之后需要向用户开具发票/收据。
我的疑问是如何为这种问题形式和发票的上下文组织数据库。在每次付费注册中,用户点击“商店注册”按钮后,必须先开具形式,所有注册信息都存储在数据库中,然后在付款后开具发票。必须有两个模型/表格“发票”和“形式”,每个表格与注册表具有一对一的关系。还是只需要 1 个与注册表相关的表?
目前,我创建了两个表格 Proforma 和 Invoice,这些表格与 Registration 表格的关系如下 1 比 1,但我不知道它是否正确。
表格结构:
registration columns: id, status, conference_id, user_that_did_registration
proformas: id, proforma_number, registration_id
invoices: id, invoice_number, registration_id
问题的相关模型:
注册模式:
class Registration extends Model
{
public function customer(){
return $this->belongsTo(User::class, 'user_that_did_registration', 'id');
}
public function participants(){
return $this->hasMany('App\Participant');
}
public function registration_types(){
return $this->belongsToMany('App\RegistrationType', 'registration_registration_types');
}
public function conference(){
return $this->belongsTo('App\conference');
}
public function proforma()
{
return $this->hasOne('App\Proforma');
}
public function invoice()
{
return $this->hasOne('App\Invoice');
}
}
形式模型:
class Proforma extends Model
{
public function registration()
{
return $this->belongsTo('App\Registration');
}
}
发票模型:
class Invoice extends Model
{
public function registration()
{
return $this->belongsTo('App\Registration');
}
}
【问题讨论】:
-
您过去研究过数据库设计吗?
标签: php database laravel database-design eloquent