Métodos load(), loadWhere(), loadWhereEq() y reload() del modelo

Los modelos tienen los métodos load(), loadWhere() y reload() para recuperar registros. El método loadFromCode() permanece como alias por compatibilidad, pero está en desuso y debería evitarse en el código nuevo.

⚡ load($code)

Permite cargar el registro cuyo valor de clave primaria coincide con $code.

Parámetros

  • code: Valor de la clave primaria. Si es null, el método devuelve FALSE sin realizar consultas.

Retorno y efectos

  • Devuelve TRUE si encuentra el registro y carga los datos en el modelo.
  • Devuelve FALSE si no existe y limpia el estado (clear()), dejando el modelo sin identificador.
  • Tras una carga correcta se sincronizan los valores originales (syncOriginal()), lo que permite detectar cambios antes de guardar.

Ejemplo: Cargar el cliente 123

use FacturaScripts\Core\Model\Cliente;

$cliente = new Cliente();
if ($cliente->load('123')) {
    // OK, hemos cargado los datos del cliente 123
} else {
    // No existe ningún cliente 123
}

⚡ loadWhere(array $where, array $order = [])

Permite cargar el primer registro que cumple una lista de filtros.

Parámetros

  • where: Array de filtros. Lo habitual es usar objetos de la clase FacturaScripts\Core\Where.
    • Construye filtros AND/OR con métodos como Where::eq(), Where::orLike(), Where::sub(), etc.
    • Puedes filtrar varios campos a la vez usando el separador | en la definición (Where::like('nombre|razonsocial', 'demo')).
    • Los operadores soportados incluyen =, !=, >, <, BETWEEN, IN, LIKE, XLIKE, REGEXP, además de comparaciones entre columnas mediante valores Where::column('campo', 'field:otro_campo').
  • order: (opcional) Array asociativo ['campo' => 'ASC|DESC'] que se aplica al conjunto filtrado. Admite varios campos de ordenación.

Retorno y efectos

  • Devuelve TRUE si encuentra un registro y lo carga.
  • Devuelve FALSE si no hay coincidencias y limpia el estado del modelo.
  • También sincroniza los valores originales para que funciones como hasChanged() sigan operativas.

Ejemplo: Cargar el cliente con teléfono 555444333

use FacturaScripts\Core\Model\Cliente;
use FacturaScripts\Core\Where;

$cliente = new Cliente();
if ($cliente->loadWhere([Where::eq('telefono1', '555444333')])) {
    // OK
} else {
    // Cliente no encontrado
}

Ejemplo: Combinar filtros complejos

use FacturaScripts\Core\Model\Cliente;
use FacturaScripts\Core\Where;

$where = [
    Where::like('telefono1|telefono2', '%444%'),
    Where::eq('estado', 'ACTIVO'),
    Where::isNull('fechabaja')
];

$cliente = new Cliente();
if ($cliente->loadWhere($where, ['fechaalta' => 'DESC'])) {
    // Cliente activo más reciente con un teléfono que contiene 444
}

Ejemplo: Cargar el primer producto con stock mayor que 0

use FacturaScripts\Core\Model\Producto;
use FacturaScripts\Core\Where;

$producto = new Producto();
$producto->loadWhere([Where::gt('stockfis', 0)], ['stockfis' => 'ASC']);

⚡ loadWhereEq(string $field, $value)

Atajo para llamar a loadWhere() con un filtro de igualdad sobre un único campo.

Parámetros

  • field: Nombre del campo sobre el que se aplicará el filtro.
  • value: Valor que debe tener el campo. Se convierte a SQL mediante var2str, por lo que puedes pasar cadenas, números o nulos.

Retorno y efectos

  • Devuelve TRUE si encuentra un registro con el valor indicado.
  • Devuelve FALSE si no hay coincidencias y limpia el estado del modelo.
  • Internamente llama a loadWhere([Where::eq($field, $value)]), por lo que comparte el mismo comportamiento que loadWhere().

Ejemplo: Cargar un almacén por código

use FacturaScripts\Core\Model\Almacen;

$almacen = new Almacen();
if ($almacen->loadWhereEq('codigo', 'MADRID')) {
    // Almacén encontrado
}

⚡ reload()

Vuelve a cargar desde la base de datos el registro actual del modelo, machacando los valores de sus propiedades. Es útil cuando el registro puede haber cambiado por otro proceso (una extensión, un cron, otro usuario) o para descartar modificaciones hechas en memoria sin guardar.

Parámetros

No recibe parámetros. Utiliza el identificador actual del modelo ($this->id()).

Retorno y efectos

  • Devuelve TRUE si recarga los datos correctamente.
  • Devuelve FALSE si el modelo no tiene identificador (registro nuevo, sin guardar).
  • Devuelve FALSE si el registro ya no existe en la base de datos; en ese caso además se limpia el estado del modelo (clear()).
  • Internamente llama a load($this->id()), por lo que tras una recarga correcta también se sincronizan los valores originales (syncOriginal()).
  • Las extensiones del modelo pueden engancharse con los hooks reloadBefore (puede cancelar la recarga devolviendo FALSE) y reload.

Ejemplo: Descartar cambios no guardados

use FacturaScripts\Core\Model\Producto;

$producto = new Producto();
$producto->load('123');
$producto->precio = 100.0;

// nos arrepentimos y recuperamos los datos de la base de datos
if ($producto->reload()) {
    // $producto->precio vuelve a tener el valor guardado
}

Evita loadFromCode()

loadFromCode() sigue existiendo como alias para proyectos antiguos, pero está deprecated. No admite todas las capacidades de Where y será retirado en futuras versiones. Siempre que necesites cargar datos:

  • Usa load($codigo) si conoces la clave primaria.
  • Usa loadWhere($filtros, $orden) para cualquier otra búsqueda.
Cookies
Usamos cookies necesarias para el funcionamiento del sitio y cookies opcionales para recordar tus preferencias y mejorar tu experiencia. Puedes aceptarlas todas, rechazarlas o configurar tus preferencias

Soporte