Symfony - 字符串字段中的持久数组

Posted

技术标签:

【中文标题】Symfony - 字符串字段中的持久数组【英文标题】:Symfony - persisting array in string field 【发布时间】:2021-10-30 18:15:33 【问题描述】:

在我的 Symofny 项目中,在持久化实体时,我通过请求传递我的用户角色,当转储该角色时,结构如下所示:

roles dump img

归档我将它持久化,(不在用户表中)用于一些混合值,它是 string 的类型,因为我将它用于混合目的。 所以,当坚持我总是得到:

注意:数组到字符串的转换

我发现了很多问题,但没有一个对我有用:

我很害怕:

$new->setValue(json_encode(json_decode($roles)));

$new->setValue(implode(',', $roles));

总是遇到同样的错误。有人可以提供替代方法,以便我可以将角色持久保存到字符串字段中并克服此错误吗?

【问题讨论】:

您好!您可以在“prepersist”和“preupdate”事件上使用事件侦听器。你可以在这里找到相关信息:symfony.com/doc/current/doctrine/events.html 实体是如何映射的?你能把代码贴在这里吗? 使用simple array理论字段类型。 【参考方案1】:

我猜 JSON 编码是由 Doctrine 完成的。通常,我会这样设置角色:

public function setRoles(array $roles): self

    $this->roles = $roles;

    return $this;


public function addRole(string $role): self

    $this->roles[] = $role;

    return $this;

【讨论】:

以上是关于Symfony - 字符串字段中的持久数组的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine DQL (Symfony2) - WHERE 连接字段是 IN params

使用 Symfony 5/Twig“数组到字符串转换”的嵌套数组问题

Symfony:角色管理上的“数组到字符串转换”错误

Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组

Symfony2,Doctrine,fixtures,数组到字符串的转换

如何在 symfony2 的表单类中隐藏标签?