Skip to main content

Overview

El modelo Casos representa los casos legales gestionados por el despacho. Cada caso está asociado a un cliente y contiene información sobre el proceso legal, fechas y estado del caso. Namespace: App\Models\Casos Table: casos Traits:
  • HasFactory - Soporte para factories de Laravel
  • Searchable - Integración con Laravel Scout para búsqueda

Fillable Attributes

n_caso
string
required
Número único del caso
fecha_inicio
date
required
Fecha de inicio del caso
fecha_final
date
Fecha de finalización o cierre del caso
descripcion
text
Descripción detallada del caso legal
estado
string
required
Estado actual del caso (abierto, en proceso, cerrado, etc.)
id_cliente
integer
required
ID del cliente asociado al caso (foreign key)

Relationships

cliente()

Relación muchos a uno con el cliente propietario del caso. Type: BelongsTo Returns: Illuminate\Database\Eloquent\Relations\BelongsTo
public function cliente(): BelongsTo
{
    return $this->belongsTo(Cliente::class, 'id_cliente', 'id');
}
El modelo Casos se relaciona con otros modelos del sistema:
  • Caso_has_proceso - Tabla pivot para procesos asociados al caso
  • Caso_has_PContraria - Relación con partes contrarias en el caso
  • CasoDocumento - Documentos asociados al caso legal

Laravel Scout Configuration

El modelo Casos está configurado para búsqueda con Laravel Scout. Los siguientes campos son indexados:
public function toSearchableArray()
{
    return [
        'n_caso' => $this->n_caso,
        'estado' => $this->estado,
    ];
}

Usage Examples

use App\Models\Casos;

$caso = Casos::create([
    'n_caso' => 'CASO-2024-001',
    'fecha_inicio' => '2024-01-15',
    'descripcion' => 'Caso de demanda laboral por despido injustificado',
    'estado' => 'abierto',
    'id_cliente' => 1
]);

Database Schema

CREATE TABLE casos (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    n_caso VARCHAR(255) NOT NULL,
    fecha_inicio DATE NOT NULL,
    fecha_final DATE NULL,
    descripcion TEXT,
    estado VARCHAR(255) NOT NULL,
    id_cliente BIGINT UNSIGNED NOT NULL,
    created_at TIMESTAMP NULL,
    updated_at TIMESTAMP NULL,
    
    FOREIGN KEY (id_cliente) REFERENCES clientes(id) ON DELETE CASCADE,
    INDEX idx_n_caso (n_caso),
    INDEX idx_estado (estado),
    INDEX idx_id_cliente (id_cliente)
);

Complete Model Code

/home/daytona/workspace/source/app/Models/Casos.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Laravel\Scout\Searchable;

class Casos extends Model
{
    use HasFactory, Searchable;
    
    protected $fillable = [
        'n_caso',
        'fecha_inicio',
        'fecha_final',
        'descripcion',
        'estado',
        'id_cliente',
    ];

    public function cliente(): BelongsTo
    {
        return $this->belongsTo(Cliente::class, 'id_cliente', 'id');
    }

    public function toSearchableArray()
    {
        return [
            'n_caso' => $this->n_caso,
            'estado' => $this->estado,
        ];
    }
}

Build docs developers (and LLMs) love