codeigniter4 / codeigniter4/CodeIgniter4
How do you use `object` cast handler for Entity?
- Ngôn ngữ chính
- PHP
- Star
- 6k
- Fork
- 2k
- Merge trung bình
- 1 ngày 11 giờ
- Pull request đã merge (30 ngày)
- 73
Mô tả
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?
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với tài liệu về property casting, sau đó đọc system/Entity/Cast/ObjectCast.php và các trường hợp trong EntityTest.php được tham chiếu. Tái hiện ví dụ lưu một Entity với một object cast và xác định hành vi dự kiến; được xem là hoàn tất khi việc sử dụng handler và tương tác với cơ sở dữ liệu được bao phủ bằng một bài kiểm thử rõ ràng hoặc một bản cập nhật tài liệu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- php
- Lĩnh vực
- backend, database
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100