Overview
El modelo Cliente representa a los clientes del despacho de abogados. Este modelo utiliza Laravel Scout para búsqueda avanzada y gestiona toda la información personal y de contacto de los clientes.
Namespace: App\Models\Cliente
Table: clientes
Traits:
HasFactory - Soporte para factories de Laravel
Searchable - Integración con Laravel Scout para búsqueda
Fillable Attributes
Género del cliente (masculino, femenino, otro)
Documento Nacional de Identidad o RUC del cliente
Nombre de la empresa si el cliente es persona jurídica
Correo electrónico del cliente
Número de teléfono del cliente
Dirección física del cliente
Referencia adicional para ubicación o información del cliente
Estado actual del cliente (activo, inactivo, etc.)
Relationships
expedientes()
Relación uno a muchos con expedientes de conciliación.
Type: HasMany
Returns: Illuminate\Database\Eloquent\Relations\HasMany
public function expedientes () : HasMany
{
return $this -> hasMany ( Expedientes :: class , 'id_cliente' , 'id' );
}
casos()
Relación uno a muchos con casos legales.
Type: HasMany
Returns: Illuminate\Database\Eloquent\Relations\HasMany
public function casos () : HasMany
{
return $this -> hasMany ( Casos :: class , 'id_cliente' , 'id' );
}
Laravel Scout Configuration
El modelo Cliente está configurado para búsqueda con Laravel Scout. Los siguientes campos son indexados:
public function toSearchableArray ()
{
return [
'nombre' => $this -> nombre ,
'apellidos' => $this -> apellidos ,
'dni_ruc' => $this -> dni_ruc ,
'empresa' => $this -> empresa ,
'email' => $this -> email ,
'telefono' => $this -> telefono ,
'direccion' => $this -> direccion ,
];
}
Usage Examples
Creating a Client
Searching Clients
Accessing Relationships
Updating Client Status
Eager Loading Relationships
use App\Models\ Cliente ;
$cliente = Cliente :: create ([
'nombre' => 'Juan' ,
'apellidos' => 'Pérez García' ,
'genero' => 'masculino' ,
'dni_ruc' => '12345678' ,
'email' => '[email protected] ' ,
'telefono' => '987654321' ,
'direccion' => 'Av. Principal 123' ,
'referencia' => 'Cerca del parque central' ,
'estado_cliente' => 'activo'
]);
Complete Model Code
/home/daytona/workspace/source/app/Models/Cliente.php
<? php
namespace App\Models ;
use Illuminate\Database\Eloquent\Factories\ HasFactory ;
use Illuminate\Database\Eloquent\ Model ;
use Illuminate\Database\Eloquent\Relations\ HasMany ;
use Laravel\Scout\ Searchable ;
class Cliente extends Model
{
use HasFactory , Searchable ;
protected $fillable = [
'nombre' ,
'apellidos' ,
'genero' ,
'dni_ruc' ,
'empresa' ,
'email' ,
'telefono' ,
'direccion' ,
'referencia' ,
'estado_cliente' ,
];
public function toSearchableArray ()
{
return [
'nombre' => $this -> nombre ,
'apellidos' => $this -> apellidos ,
'dni_ruc' => $this -> dni_ruc ,
'empresa' => $this -> empresa ,
'email' => $this -> email ,
'telefono' => $this -> telefono ,
'direccion' => $this -> direccion ,
];
}
public function expedientes () : HasMany
{
return $this -> hasMany ( Expedientes :: class , 'id_cliente' , 'id' );
}
public function casos () : HasMany
{
return $this -> hasMany ( Casos :: class , 'id_cliente' , 'id' );
}
}