Doctrine 为什么blob字段中的图像只显示一次?

Doctrine 为什么blob字段中的图像只显示一次?,doctrine,blob,fosuserbundle,symfony,Doctrine,Blob,Fosuserbundle,Symfony,我超过了FOSUserBundle。 我将用户实体(该实体扩展了FOSUser实体)中的化身字段getter和setter更改为: 它只在第一次渲染时起作用 <img alt="User avatar" src="data:image;base64,{{app.user.avatar}}"/> //working <img alt="User avatar" src="data:image;base64,{{app.user.avatar}}"/> //not worki

我超过了FOSUserBundle。 我将用户实体(该实体扩展了FOSUser实体)中的化身字段getter和setter更改为:

它只在第一次渲染时起作用

<img alt="User avatar" src="data:image;base64,{{app.user.avatar}}"/> //working
<img alt="User avatar" src="data:image;base64,{{app.user.avatar}}"/> //not working
//正在工作
//不起作用
如果我第一次尝试显示此字段,则一切正常,并且每次下一次渲染都显示空字符串。为什么?如何解决这个问题


其他字段工作正常。

从数据库加载实体时,条令不会使用设置程序填充实体。因此,当您第一次调用
getAvatar()
,将执行
stream\u get\u contents()
,并从流中读取所有内容。下次调用此getter方法时,流中没有任何内容可供读取。当调用
getAvatar()
时,您可能希望将
stream\u get\u contents()
返回的字符串保存在
$avatar
属性中,就像您在
setAvatar()
中所做的那样,您有权这样做。我通过在函数
流获取内容($this->avatar,-1,0)
-1
中添加两个参数来解决我的问题,这意味着读取所有剩余的缓冲区,并且
0
是偏移量
<img alt="User avatar" src="data:image;base64,{{app.user.avatar}}"/> //working
<img alt="User avatar" src="data:image;base64,{{app.user.avatar}}"/> //not working