Skip to main content

Overview

El modelo Expedientes representa los expedientes de conciliación extrajudicial gestionados por el centro de conciliación. Cada expediente está asociado a un cliente y puede tener múltiples submaterias y actividades de conciliación. Namespace: App\Models\Expedientes Table: expedientes Traits:
  • HasFactory - Soporte para factories de Laravel
  • Searchable - Integración con Laravel Scout para búsqueda

Fillable Attributes

n_expediente
string
required
Número único del expediente de conciliación
fecha_inicio
date
required
Fecha de inicio del expediente
fecha_final
date
Fecha de finalización o cierre del expediente
descripcion
text
Descripción detallada del expediente de conciliación
estado
string
required
Estado actual del expediente (abierto, en proceso, cerrado, acuerdo total, falta de acuerdo, etc.)
id_cliente
integer
required
ID del cliente solicitante (foreign key)

Relationships

cliente()

Relación muchos a uno con el cliente solicitante del expediente. Type: BelongsTo Returns: Illuminate\Database\Eloquent\Relations\BelongsTo
public function cliente(): BelongsTo
{
    return $this->belongsTo(Cliente::class, 'id_cliente', 'id');
}

submaterias()

Relación muchos a muchos con las submaterias conciliables asociadas al expediente. Type: BelongsToMany Returns: Illuminate\Database\Eloquent\Relations\BelongsToMany Pivot Table: expediente_has_submaterias
public function submaterias(): BelongsToMany
{
    return $this->belongsToMany(
        Submaterias::class,
        'expediente_has_submaterias',
        'id_expediente',
        'id_submateria'
    );
}

conActividades()

Relación uno a muchos con las actividades de conciliación programadas para el expediente. Type: HasMany Returns: Illuminate\Database\Eloquent\Relations\HasMany
public function conActividades(): HasMany
{
    return $this->hasMany(ActividadConciliacion::class, 'id_expediente', 'id');
}
El modelo Expedientes se relaciona con otros modelos del sistema:
  • Expediente_has_submateria - Tabla pivot para submaterias asociadas
  • expediente_has_invitado - Tabla pivot para partes invitadas al expediente
  • Expediente_has_conciliador - Tabla pivot para conciliadores asignados
  • ActividadConciliacion - Actividades y audiencias programadas

Laravel Scout Configuration

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

Usage Examples

use App\Models\Expedientes;

$expediente = Expedientes::create([
    'n_expediente' => 'EXP-2024-001',
    'fecha_inicio' => '2024-01-15',
    'descripcion' => 'Expediente de conciliación extrajudicial en materia familiar',
    'estado' => 'abierto',
    'id_cliente' => 1
]);

Database Schema

CREATE TABLE expedientes (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    n_expediente VARCHAR(255) NOT NULL UNIQUE,
    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_expediente (n_expediente),
    INDEX idx_estado (estado),
    INDEX idx_id_cliente (id_cliente)
);

CREATE TABLE expediente_has_submaterias (
    id_expediente BIGINT UNSIGNED NOT NULL,
    id_submateria BIGINT UNSIGNED NOT NULL,
    
    PRIMARY KEY (id_expediente, id_submateria),
    FOREIGN KEY (id_expediente) REFERENCES expedientes(id) ON DELETE CASCADE,
    FOREIGN KEY (id_submateria) REFERENCES submaterias(id) ON DELETE CASCADE
);

Complete Model Code

/home/daytona/workspace/source/app/Models/Expedientes.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\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Laravel\Scout\Searchable;

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

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

    public function submaterias(): BelongsToMany
    {
        return $this->belongsToMany(
            Submaterias::class,
            'expediente_has_submaterias',
            'id_expediente',
            'id_submateria'
        );
    }

    public function conActividades(): HasMany
    {
        return $this->hasMany(ActividadConciliacion::class, 'id_expediente', 'id');
    }

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

Build docs developers (and LLMs) love