Как создать отношения между тремя таблицами в Laravel? - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно создать отношения между 3 таблицами в Laravel.Кто-нибудь может сказать мне, какой способ создания Entity Relationship является лучшим?

Модель 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 Ответ

2 голосов
/ 27 июня 2019

Ваши отношения должны быть следующими:

  1. Client - hasMany -> Service
  2. Service - принадлежит To -> Client
  3. Service - принадлежитTo -> Invoice
  4. Client - hasMany -> Invoice
  5. Invoice - принадлежитTo -> Client
  6. Invoice - ownTo -> Service

Отредактировано:

Убедитесь, что у вас есть эти поля и таблица существует.

  1. services должно иметь client_id & invoice_id
  2. invoices должно иметь client_id

Отредактировано 2:

Поскольку процесс выставления счетов идет после сервисов ... в таком случае вы должны создать отдельную таблицу для отношения ч / б Service -belongsToMany-> Invoice И то же самое в Invoice модели Invoice -belongsToMay-> Service.

Изменения полей будут следующими:

  1. services должен иметь client_id & invoice_id
  2. invoices должен иметь client_id
  3. должна быть промежуточная таблица, такая как services_invoices, которая содержит id, service_id и invoice_id.
...