使用严格属性类型 PDO::FETCH_CLASS 时处理空值

我正在尝试获取所有行并将其设置为Inventory类。这是我的课程以及我如何获取它


class Inventory {

  public int $id;

  public string $name;

  public string $type_of;

  public float $weight;

}



$query = "SELECT * FROM inventories";


$inventories = $this->db->prepare($query);

$inventories->execute();

$inventories = $inventories->fetchAll(PDO::FETCH_CLASS, 'Inventory');

在数据库中,该type_of属性可以为空。因此,当我执行代码时,它会抛出错误:


类型化属性 Inventory::$type_of 必须是字符串,使用 null


有没有办法忽略 null 值并将其转换为其类型默认值。


示例:type_of是字符串,当值为null时会变成空字符串。weight是 float,那么它会变成0.0.


太感谢了


慕码人2483693
浏览 111回答 2
2回答

绝地无双

有两种可能的解决方案,您可以将strict_types设置为offin PHP,并且您将不再拥有TypeError您所获得的解决方案,或者您可以保持strict_types设置不变并只需进行以下更改:从public string $type_of;到public ?string $type_of;

波斯汪

您可以将类属性声明为可为空和/或具有默认值。例如:class Inventory {    public int $id;    public string $name;    public ?string $type_of = null;    public float $weight = 0;}
打开App,查看更多内容
随时随地看视频慕课网APP