我试图将一个实体属性转换为一个数组,以便它自动序列化。
实体设置如下
\App\Entities\Submission.php
<?php
namespace App\Entities;
use CodeIgniter\Entity;
class Submission extends Entity
{
protected $casts =[
'field2' => 'array'
];
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器中创建一个新实体,使用构造函数填充它
<?php
$allowedFromPost = [
'field1'=>'value1',
'field2'=>[0,1],
];
$submission = new \App\Entities\Submission($allowedFromPost);
?>
Run Code Online (Sandbox Code Playgroud)
此时转储提交 (var_dump()) 显示 field2 是一个数组,它没有被序列化。
["attributes":protected]=>
array(2) {
["field1"]=>
string(6) "value1"
["field2"]=>
array(2) {
[0]=>
int(0)
[1]=>
int(1)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我做
<?php
$allowedFromPost = [
'field1'=>'value1',
'field2'=>[0,1],
];
$submission = new \App\Entities\Submission($allowedFromPost);
?>
Run Code Online (Sandbox Code Playgroud)
然后 var_dump, field2 被正确序列化。
["attributes":protected]=>
array(2) {
["field1"]=>
string(6) "value1"
["field2"]=>
string(22) "a:2:{i:0;i:0;i:1;i:1;}" …Run Code Online (Sandbox Code Playgroud)