| Següent revisió | Revisió prèvia |
| development:php:codeigniter:v4:model [08/06/2026 00:08] – creat mate | development:php:codeigniter:v4:model [08/06/2026 01:31] (actual) – [placeholders] mate |
|---|
| = CodeIgniter v4 Model | = CodeIgniter v4 Model |
| | {{tag>codeigniter}} |
| * conexión automática a BDD | * conexión automática a BDD |
| * métodos CRUD básicos | * métodos CRUD básicos |
| * ''$beforeInsert = [];'' | * ''$beforeInsert = [];'' |
| * ''$afterInsert = [];'' | * ''$afterInsert = [];'' |
| | * ''$beforeInsertBatch = [];'' |
| | * ''$afterInsertBatch = [];'' |
| * ''$beforeUpdate = [];'' | * ''$beforeUpdate = [];'' |
| * ''$afterUpdate = [];'' | * ''$afterUpdate = [];'' |
| | * ''$beforeUpdateBatch = [];'' |
| | * ''$afterUpdateBatch = [];'' |
| * ''$beforeFind = [];'' | * ''$beforeFind = [];'' |
| * ''$afterFind = [];'' | * ''$afterFind = [];'' |
| * ''first()'': solo retorna el primer registro | * ''first()'': solo retorna el primer registro |
| * ''withDeleted()'' | * ''withDeleted()'' |
| | * ''asArray()'' ''asObject()'' <- Entity |
| * ''insert($data[,$bool])'' | * ''insert($data[,$bool])'' |
| * $data: array de valores de campos | * $data: array de valores de campos |
| * ''getInsertID()'' | * ''getInsertID()'' |
| * ''allowEmptyInserts()''[[https://codeigniter.com/user_guide/models/model.html#model-allow-empty-inserts]] | * ''allowEmptyInserts()''[[https://codeigniter.com/user_guide/models/model.html#model-allow-empty-inserts]] |
| | * ''insertBatch()'' |
| | * $useAutoIncrement = false |
| * ''update($primaryKey,$data)'' | * ''update($primaryKey,$data)'' |
| * permite actualizar varias filas a la vez [[https://codeigniter.com/user_guide/models/model.html#update]] | * permite actualizar varias filas a la vez [[https://codeigniter.com/user_guide/models/model.html#update]] |
| * ''save($data)'': decide si hacer insert() o update() en función de si el array contiene un campo equivalente a la de la $primaryKey | * ''save($data)'': decide si hacer insert() o update() en función de si el array contiene un campo equivalente a la de la $primaryKey |
| * | * instancias de ''Time'' se convierten en cadenas con el formato definido en dateFormat['datetime'],dateFormat['date'] dentro de [[https://codeigniter.com/user_guide/database/configuration.html#database-config-explanation-of-values]] |
| * ''delete()'' | * los métodos ''save'' comprueban la validez de la $primaryKey |
| | * [[https://codeigniter.com/user_guide/models/model.html#primary-key-validation]] |
| | * ''validateID()'' |
| | * ''delete($primaryKey,[$primaryKey,$primaryKey,...])'' |
| | * con ''$useSoftDeletes=true'', se actualiza la columna indicada en ''$deletedField'' |
| | * ''purgeDeleted()'' |
| | * ''chunk()'': para procesar un gran volumen de datos de manera fraccionada |
| |
| | == in-Model Validation |
| | * verificar antes de guardar que cumple los requisitos indicados |
| | * usa la propiedad ''$validationRules'' (y complementa con ''$validationMessages'':<code php> |
| | protected $validationRules = [ |
| | 'username' => 'required|max_length[30]|alpha_numeric_space|min_length[3]', |
| | 'email' => 'required|max_length[254]|valid_email|is_unique[users.email]', |
| | 'password' => 'required|max_length[255]|min_length[8]', |
| | 'pass_confirm' => 'required_with[password]|max_length[255]|matches[password]', |
| | ]; |
| | protected $validationMessages = [ |
| | 'email' => [ |
| | 'is_unique' => 'Sorry. That email has already been taken. Please choose another.', |
| | ], |
| | ]; |
| | </code> |
| | * ''setValidationRule($campo,$reglas)'' y su complemento ''setValidationMessage($campo,$array)'' |
| | * ''setValidationRules([$campo=>$reglas,$campo=>$reglas])'' y su complemente ''setValidationMessages([$campo=>$array])'' |
| | * si no valida, el Modelo retorna **false**. Se pueden recuperar los errores con el método ''errors()'' |
| | * ''getValidationRules($options)'' |
| | * $options: array con 2 claves, **except** o **only** para recoger las reglas de validación indicadas |
| | * también se puede indicar un grupo de reglas de validaciones [[https://codeigniter.com/user_guide/libraries/validation.html#saving-validation-rules-to-config-file]] |
| | === placeholders |
| | * [[https://codeigniter.com/user_guide/libraries/validation.html#rules-for-general-use]] |
| | * [[https://codeigniter.com/user_guide/libraries/validation.html#validation-available-rules]] |
| | * ''is_unique'' |
| | * ''is_unique[tabla.campo,id,{id}'' único campo para el id={id} (si es el campo $primaryKey) |
| | * ''alpha*'', ''string'' |
| | * ''field_exists'' |
| | * ''in_list'', ''not_in_list'' |
| | * ''max_length'', ''min_length'', ''exact_length'' |
| | * ''permit_empty'' |
| | * ''required'',''required_with'',''required_without'' |
| | * ''valid_email'',''valid_emails'' |
| | * ''valid_date'' |
| | * ''valid_json'' |
| | == protecting Fields |
| | * ''$allowedFields'' |
| | * ''protect(true|false)'' |
| | |
| | == Callbacks |
| | * [[https://codeigniter.com/user_guide/models/model.html#defining-callbacks]] |
| | * ''allowCallbacks(false)'' |
| == crear | == crear |
| <code php> | <code php> |