首页 > 解决方案 > 只返回查询的值,而不是函数内的“column”:“value”键对

问题描述

我的用户模型中有这个功能:

public function adminlte_image()
{
   return Employee::where('user_id',$this->id)->get('image');
}

返回:

[
   {"image":"Base64 String"}
]

但相反,我想要的只是返回该列的值而不是 json,因为该函数是在 img src 中调用的:

<img src="Base64 String" class="user-image img-circle elevation-2" alt="Mathias Oliveira">

这是当前代码的样子:

<img src="[{"image":"Base64 String"}]" class="user-image img-circle elevation-2" alt="Mathias Oliveira">

我无法编辑 html 或函数的调用方式,只能编辑函数本身。

标签: laravel

解决方案


尝试

public function adminlte_image()
{
   return Employee::where('user_id',$this->id)->firstOrFail()->image;
}

firstOrFail将确保当没有 user_id = $this->id 的记录时,它不会在 null 上抛出访问图像属性的错误,而是在没有找到给定 user_id = $this- 的模型记录时抛出 ModelNotFound 异常>身份证

虽然这有效,但如果没有记录而不是 ModelNotFound 异常,有什么方法可以返回 null 吗?


public function adminlte_image()
{
    $emp = Employee::where('user_id',$this->id)->first();

    return $emp ? $emp->image : null;

    //OR using optional helper

    return optional(Employee::where('user_id', $this->id)->first())->image;
}

Laravel 文档:https ://laravel.com/docs/8.x/helpers#method-optional


推荐阅读