codeigniter4 / codeigniter4/CodeIgniter4

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

Aberta
#7,993 4 comentários 0 reações 0 responsáveis Ver no GitHub
question
Linguagem predominante
PHP
Estrelas
6k
Forks
2k
Merge médio
1d 11h
PRs com merge (30d)
73

Descrição

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?

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece pela documentação de property casting, depois leia system/Entity/Cast/ObjectCast.php e os casos referenciados de EntityTest.php. Reproduza o exemplo que salva uma Entity com um object cast e determine o comportamento pretendido; considera-se concluído quando o uso do handler e a interação com o banco de dados estiverem cobertos por um teste claro ou uma atualização da documentação.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
php
Domínio
backend, database
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.