tablas y modelos
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Appointment extends Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
// Así podrás hacer cosas como $turno->fecha_programada->format('d/m/Y')
|
||||
protected $casts = [
|
||||
'fecha_programada' => 'datetime',
|
||||
];
|
||||
public function clients()
|
||||
{
|
||||
return $this->belongsTo(Client::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Client extends Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
|
||||
// Un usuario (cliente) realiza muchas compras (ventas)
|
||||
public function sales()
|
||||
{
|
||||
return $this->hasMany(Sale::class);
|
||||
}
|
||||
}
|
||||
+29
-7
@@ -9,13 +9,35 @@ class Product extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
protected $fillable = [
|
||||
'codigo',
|
||||
'nombre',
|
||||
'marca',
|
||||
'modelo',
|
||||
'rodado',
|
||||
'color',
|
||||
'tipo',
|
||||
'descripcion',
|
||||
'precio'
|
||||
'costo',
|
||||
'precio',
|
||||
'stock',
|
||||
'min_stock',
|
||||
'categoria',
|
||||
'descripcion'
|
||||
];
|
||||
public function supplier()
|
||||
{
|
||||
return $this->belongsTo(Suppliers::class);
|
||||
}
|
||||
|
||||
// Opción 1: Relación directa con los detalles (Renglones de ticket)
|
||||
// Útil para saber cantidad total vendida: $product->saleDetails->sum('quantity')
|
||||
public function saleDetails()
|
||||
{
|
||||
return $this->hasMany(SaleDetail::class);
|
||||
}
|
||||
|
||||
// Opción 2 (Pro Tip): Relación directa con las Ventas a través de los detalles
|
||||
// Útil para saber EN QUÉ fechas se vendió: $product->sales
|
||||
public function sales()
|
||||
{
|
||||
return $this->belongsToMany(Sale::class, 'sale_details');
|
||||
}
|
||||
|
||||
}
|
||||
/**$user->sales: Te da la lista de todas las compras de ese usuario.
|
||||
|
||||
$product->saleDetails->count(): Te dice cuántas veces aparece ese producto en tickets.**/
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Sale extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
protected $fillable = [
|
||||
'metodo_pago'
|
||||
];
|
||||
|
||||
// Permitimos asignación masiva para poder guardar rápido
|
||||
protected $guarded = [];
|
||||
|
||||
// Relación 1: Una venta pertenece a un Cliente (User)
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
// Relación 2: Una venta tiene muchos items o detalles
|
||||
public function details()
|
||||
{
|
||||
return $this->hasMany(SaleDetail::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class SaleDetail extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
protected $guarded = [];
|
||||
|
||||
// este detalle pertenece a una Venta específica
|
||||
public function sale()
|
||||
{
|
||||
return $this->belongsTo(Sale::class);
|
||||
}
|
||||
|
||||
// este detalle corresponde a un Producto
|
||||
public function product()
|
||||
{
|
||||
return $this->belongsTo(Product::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Supplier extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'nombre',
|
||||
'telefono',
|
||||
'email'
|
||||
];
|
||||
public function products()
|
||||
{
|
||||
return $this->hasMany(Product::class);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user