Aquesta és una revisió antiga del document
CodeIgniter v4 Model
- conexión automática a BDD
- métodos CRUD básicos
- permite extender de otros modelos
instanciar
// Create a new class manually. $userModel = new \App\Models\UserModel(); // Create a shared instance of the model. $userModel = model('UserModel'); // or $userModel = model('App\Models\UserModel'); // or $userModel = model(\App\Models\UserModel::class); // Create a new class with the model() function. $userModel = model('UserModel', false); // Create shared instance with a supplied database connection. $db = db_connect('custom'); $userModel = model('UserModel', true, $db);
propiedades built-in
$DBGRoup: conexión alternativa a la BDD en lugar de la establecida por defecto.connecting$table: tabla primaria, solo aplica en los métodos básicos de CRUD$primaryKey$useAutoIncrement = true: poner a false si se ha delegado en la BDD$returnType = 'array': retorno defind(), array o object$useSoftDeletes = true;: si cierto, actualiza el campo deleted_atwithDeleted()
$allowedFields: campos permitidos en los métodos básicos CRUDsave(),insert(),update()- la
$primaryKeyno ha de estar en esta lista
$allowEmptyInserts: Si true lanzará excepción en caso de insert vacío$updateOnlyChanged: Si true lanzará excepción en caso de que no haya nada que actualizar$casts: forzar un cast de variables después de recuperar de la BDD- no usar en conjunto con CodeIgniter v4 Entity
- Dates:
$useTimestamps = false;$dateFormat = 'datetime';: valores permitidos: datetime, date, int$createdField = 'created_at';$updatedField = 'updated_at';$deletedField = 'deleted_at';
- Validacions:
$validationRules = [];$validationMessages = [];$skipValidation = false;$cleanValidationRules = true;cleanRules()- ???
- Callbacks
$allowCallbacks = true;$beforeInsert = [];$afterInsert = [];$beforeUpdate = [];$afterUpdate = [];$beforeFind = [];$afterFind = [];$beforeDelete = [];$afterDelete = [];
casts
protected array $casts = [ 'id' => 'int', 'birthdate' => '?datetime', 'hobbies' => 'json-array', 'active' => 'int-bool', ;
-
- csv usa
implode()yexplode() - datetime: formato configurado en el campo dateFormat de https://codeigniter.com/user_guide/database/configuration.html#database-config-explanation-of-values
- Un ? delante del campo indica que puede ser NULL
métodos built-in
initialize(): se ejecuta después del constructor para personalizar.initializefind($primaryKey | [$primaryKey,$primaryKey,…]):- retorna la fila (o filas) de las primaryKey indicadas (array si más de una)
- si no se especifica valor, retorna todas las filas.
findColumn(): retorna los valores de una coliumnafindAll(): retorna todos los valores (si hay criterios restrictivos, los aplica)findAll($limit,$offset)
first(): solo retorna el primer registrowithDeleted()
insert($data[,$bool])- $data: array de valores de campos
- $bool: si false, retorna un bool con el resultado de la operación
getInsertID()insertBatch()- $useAutoIncrement = false
update($primaryKey,$data)- 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- instancias de
Timese 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
- los métodos
savecomprueban la validez de la $primaryKeyvalidateID()
delete($primaryKey,[$primaryKey,$primaryKey,…])- con
$useSoftDeletes=true, se actualiza la columna indicada en$deletedField purgeDeleted()
crear
namespace App\Models; use CodeIgniter\Model; class UserModel extends Model { // ... }