$modelo->load(), loadWhere() y loadWhereEq()
Los modelos tienen los métodos load() y loadWhere() 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 devuelveFALSEsin realizar consultas.
Retorno y efectos
- Devuelve
TRUEsi encuentra el registro y carga los datos en el modelo. - Devuelve
FALSEsi 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/ORcon métodos comoWhere::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 valoresWhere::column('campo', 'field:otro_campo').
- Construye filtros
- order: (opcional) Array asociativo
['campo' => 'ASC|DESC']que se aplica al conjunto filtrado. Admite varios campos de ordenación.
Retorno y efectos
- Devuelve
TRUEsi encuentra un registro y lo carga. - Devuelve
FALSEsi 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
TRUEsi encuentra un registro con el valor indicado. - Devuelve
FALSEsi no hay coincidencias y limpia el estado del modelo. - Internamente llama a
loadWhere([Where::eq($field, $value)]), por lo que comparte el mismo comportamiento queloadWhere().
Ejemplo: Cargar un almacén por código
use FacturaScripts\Core\Model\Almacen;
$almacen = new Almacen();
if ($almacen->loadWhereEq('codigo', 'MADRID')) {
// Almacén encontrado
}
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.