codeigniter4 / codeigniter4/CodeIgniter4
Bug: Entity::toRawArray() may return Time object
- 主要言語
- PHP
- スター
- 6k
- フォーク
- 2k
- 平均マージ
- 1日 11時間
- マージ済み PR(30日)
- 73
説明
### PHP Version
8.1
### CodeIgniter4 Version
4.4.3 and develop
### CodeIgniter4 Installation Method
Git
### Which operating systems have you tested for this bug?
macOS
### Which server did you use?
cli-server (PHP built-in webserver)
### Database
MySQL 8.0.34
### What happened?
The following code returns Time object.
```php
$user->updated_at = '2023-12-12 12:12:12';
var_dump($user->toRawArray());
```
### Steps to Reproduce
```
+----+------------+--------------------+---------+--------------------+--------------------+------------+
| id | name | email | country | created_at | updated_at | deleted_at |
+----+------------+--------------------+---------+--------------------+--------------------+------------+
| 1 | John Smith | john@example.co... | US | 2023-12-07 04:0... | 2023-12-07 04:0... | |
+----+------------+--------------------+---------+--------------------+--------------------+------------+
```
```php
find(1);
var_dump($user->toRawArray());
$user->updated_at = '2023-12-12 12:12:12';
var_dump($user->toRawArray());
$user = $users->find(1);
var_dump($user->toRawArray());
}
```
```
/Users/kenji/work/codeigniter/official/CodeIgniter4/app/Controllers/Home.php:15:
array (size=7)
'id' => string '1' (length=1)
'name' => string 'John Smith' (length=10)
'email' => string 'john@example.com' (length=16)
'country' => string 'US' (length=2)
'created_at' => string '2023-12-07 04:00:48' (length=19)
'updated_at' => string '2023-12-07 04:00:48' (length=19)
'deleted_at' => null
/Users/kenji/work/codeigniter/official/CodeIgniter4/app/Controllers/Home.php:18:
array (size=7)
'id' => string '1' (length=1)
'name' => string 'John Smith' (length=10)
'email' => string 'john@example.com' (length=16)
'country' => string 'US' (length=2)
'created_at' => string '2023-12-07 04:00:48' (length=19)
'updated_at' =>
object(CodeIgniter\I18n\Time)[88]
protected 'timezone' =>
object(DateTimeZone)[90]
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
protected 'locale' => string 'en' (length=2)
protected 'toStringFormat' => string 'yyyy-MM-dd HH:mm:ss' (length=19)
public 'date' => string '2023-12-12 12:12:12.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
'deleted_at' => null
/Users/kenji/work/codeigniter/official/CodeIgniter4/app/Controllers/Home.php:21:
array (size=7)
'id' => string '1' (length=1)
'name' => string 'John Smith' (length=10)
'email' => string 'john@example.com' (length=16)
'country' => string 'US' (length=2)
'created_at' => string '2023-12-07 04:00:48' (length=19)
'updated_at' => string '2023-12-07 04:00:48' (length=19)
'deleted_at' => null
```
### Expected Output
Returns string value `'2023-12-12 12:12:12'`?
### Anything else?
_No response_
コントリビューションガイド
調査の方向性
まず、再現に示されている User エンティティと日付フィールドを使って Entity::toRawArray() を追跡します。次に、提供されている find、代入、toRawArray の一連の処理を再実行し、updated_at が CodeIgniter\I18n\Time オブジェクトではなく、期待される string として返されることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- mysql, php
- 領域
- backend, database
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100