如何在Laravel中的三个表之间创建关系?

时间:2019-06-27 09:04:34

标签: database laravel crud entity-relationship-model

我必须在Laravel中的3个表之间创建关系。谁能告诉我哪种是创建实体关系的最佳方法?

模型Client.php

class Client extends Model
{
    protected $table = "clients";
    protected $fillable = ['id','name','surname','company','address','tel','email','businessnumber'];

}

模型Service.php

class Service extends Model
{
    protected $table = "services";
    protected $fillable = ['id','name','price'];
}

Invoice.php模型

class Invoice extends Model
{
    protected $table = "invoices";
    protected $fillable = ['id','client_id','invoicenumber','duration','mwst','rabatt','total','invoiceDate','dueDate','comment','status'];

}

所以,这些是我的模型,现在我必须在模型中使用哪种实体关系以及必须在表中进行哪些更改。

预期结果: 1张发票有许多服务和1个客户。例如:

#0020-19 John Doe  service1 99$   2 Month = 198$
                   -----------------------------
                   service2 199$  2 Month = 398$
                                    ------------
                                     mwst  = 20$
                                    ------------
                          discount(rabatt)  = 5$
                        ________________________
                                    total = 611$

我正在使用Validator插入数据。

谢谢。

1 个答案:

答案 0 :(得分:2)

您的关系应如下:

  1. Client-hasMany-> Service
  2. Service-属于-> Client
  3. Service-属于-> Invoice
  4. Client-hasMany-> Invoice
  5. Invoice-属于-> Client
  6. Invoice-属于-> Service

已编辑:

确保您具有这些字段,并且表格存在。

  1. services必须具有client_idinvoice_id
  2. invoices必须具有client_id

编辑2:

在服务之后开具发票流程...在这种情况下,您应该为关系b / w Service -belongsToMany-> Invoice创建一个单独的表,并且在Invoice模型中也是如此以及Invoice-belongsToMay-> Service

字段更改如下:

  1. services必须具有client_idinvoice_id
  2. invoices必须具有client_id
  3. 应该有一个像services_invoices这样的中间表,其中包含idservice_idinvoice_id