Skip to main content

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

nombre
string
required
Nombre del cliente
apellidos
string
required
Apellidos del cliente
genero
string
Género del cliente (masculino, femenino, otro)
dni_ruc
string
required
Documento Nacional de Identidad o RUC del cliente
empresa
string
Nombre de la empresa si el cliente es persona jurídica
email
string
Correo electrónico del cliente
telefono
string
Número de teléfono del cliente
direccion
string
Dirección física del cliente
referencia
string
Referencia adicional para ubicación o información del cliente
estado_cliente
string
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

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');
    }
}

Build docs developers (and LLMs) love