我必须在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$
谢谢。
答案 0 :(得分:2)
您的关系应如下:
Client
-hasMany-> Service
Service
-属于-> Client
Service
-属于-> Invoice
Client
-hasMany-> Invoice
Invoice
-属于-> Client
Invoice
-属于-> Service
已编辑:
确保您具有这些字段,并且表格存在。
services
必须具有client_id
和invoice_id
invoices
必须具有client_id
编辑2:
在服务之后开具发票流程...在这种情况下,您应该为关系b / w Service
-belongsToMany-> Invoice
创建一个单独的表,并且在Invoice
模型中也是如此以及Invoice
-belongsToMay-> Service
。
字段更改如下:
services
必须具有client_id
和invoice_id
invoices
必须具有client_id
services_invoices
这样的中间表,其中包含id
,service_id
和invoice_id
。