小编Con*_*kas的帖子

Codeigniter 4 实体属性转换为数组而不是自动序列化

我试图将一个实体属性转换为一个数组,以便它自动序列化。

实体设置如下

\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)

php codeigniter codeigniter-4

5
推荐指数
1
解决办法
1106
查看次数

标签 统计

codeigniter ×1

codeigniter-4 ×1

php ×1