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“数组到字符串转换”的嵌套数组问题
Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组