As a side project I'm creating an invoicing application. Each invoice is off-course related to a certain client, and each client can have different shipping/billing addresses.
Now most important part of an invoice, I think, is the fact that none of your information on an invoice may change (whether the client changes his information later on). So in my invoice table I make use of a client_shipping & client_billing json field and a separate client_id field.
Here you can see my current setup: Invoice model:
<?php
namespace App\Modules\Invoices\Models;
use App\Modules\Clients\Models\Client;
use Illuminate\Database\Eloquent\Model;
class Invoice extends Model
{
protected $table = 'invoices';
protected $casts = [
'client_billing' => 'array',
'client_shipping' => 'array',
];
public function client()
{
return $this->belongsTo(Client::class);
}
public function lineItems()
{
return $this->hasMany(InvoiceLineItem::class, 'invoice_id');
}
}
Client model:
<?php
namespace App\Modules\Clients\Models;
use App\Modules\Invoices\Models\Invoice;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
class Client extends Model
{
protected $table = 'clients';
public function addresses()
{
return $this->hasMany(ClientAddress::class, 'client_id');
}
public function contacts()
{
return $this->hasMany(ClientContact::class, 'client_id');
}
public function invoices()
{
return $this->hasMany(Invoice::class, 'client_id');
}
}
Now I was wondering how you'd serialize the whole client info (name, 1 chosen billing & shipping address, 1 chosen contact).
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire