Laravel模型函数返回值调整:仅返回字段值而非JSON结构
解决这个img src的问题很简单,看这两种方法就行
你现在的问题是adminlte_image()返回了一个集合,转成字符串后变成了JSON数组,导致img的src属性不对。既然不能改HTML和调用方式,那咱们直接修改函数的返回值就行:
方法一:先拿单条记录再取字段
public function adminlte_image() { // 先找到对应用户的Employee记录,再取出image字段的值 $employee = Employee::where('user_id', $this->id)->first(); // 加个空值判断,避免用户没对应Employee时出错 return $employee ? $employee->image : ''; }
方法二:用value()一步到位(更简洁)
Laravel的查询构造器有个value()方法,能直接返回匹配到的第一条记录的指定字段值,没有匹配到就返回null,非常适合你的场景:
public function adminlte_image() { // ?? '' 是为了把null转成空字符串,避免src里出现null return Employee::where('user_id', $this->id)->value('image') ?? ''; }
为啥之前的代码会出问题?
你之前用get('image')返回的是一个Eloquent集合对象,当这个对象被用在需要字符串的场景(比如img的src)时,会自动被序列化成JSON格式,也就是你看到的[{"image":"Base64 String"}]。而我们需要的是集合里第一条记录的image字段的原始字符串,所以用上面两种方法就能直接拿到这个值,渲染到src里就正常啦。
内容的提问来源于stack exchange,提问作者Mathias Hillmann
相关产品推荐
相关产品推荐

