codeigniter4 / codeigniter4/CodeIgniter4

How do you use `object` cast handler for Entity?

Ouverte
#7,993 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
question
Langage dominant
PHP
Étoiles
6k
Forks
2k
Merge moyen
1 j 11 h
PR mergées (30 j)
73

Description

https://codeigniter4.github.io/CodeIgniter4/models/entities.html#property-casting

The `object` handler seems to expect the property to be set to an array.
https://github.com/codeigniter4/CodeIgniter4/blob/0cd39937d7a8dbd8074237596024adce0fe3c2af/system/Entity/Cast/ObjectCast.php#L22-L25
https://github.com/codeigniter4/CodeIgniter4/blob/0cd39937d7a8dbd8074237596024adce0fe3c2af/tests/system/Entity/EntityTest.php#L439-L449

However, when setting an array, we cannot save that Entity to the database.

```php
$entity = new class () extends Entity {
protected $casts = [
'id' => 'int',
'active' => 'int-bool',
'memo' => 'object', // Use `object` handler
];
};
$model = new class () extends Model {
protected $table = 'users';
protected $allowedFields = [
'username', 'active', 'memo',
];
protected $useTimestamps = true;
};
$entity->fill(['username' => 'johnsmith', 'active' => false, 'memo' => ['foo', 'bar']]);
$model->save($entity); // CodeIgniter\Database\Exceptions\DatabaseException : Operand should contain 1 column(s)
```

How is this handler used in the first place?

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par la documentation sur le property casting, puis lisez system/Entity/Cast/ObjectCast.php et les cas référencés de EntityTest.php. Reproduisez l’exemple qui enregistre une Entity avec un object cast et déterminez le comportement attendu ; le travail est terminé lorsque l’utilisation du handler et l’interaction avec la base de données sont couvertes par un test clair ou une mise à jour de la documentation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
backend, database
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.