首页 > 解决方案 > 从laravel中的json字段`field_value`转换值的正确方法是什么?

问题描述

我这里有一个 laravel 代码。

return Model::where(function($query) use ($types, $codes) {
    return $query->where(function($query) use ($types, $codes) {
        foreach ($types as $key => $type) {
            $field = '"field_value"->' . "'$type'";
            $field = 'lower(' . $field . ')';

            if ($key != 0) {
                $query->orWhereJsonContains(DB::raw($field), $codes[$key]);
            } else {
                $query->whereJsonContains(DB::raw($field), $codes[$key]);
            }
        }
        return $query;
    })->orWhere('field_value', null);
})->whereHas('relation', function ($query) {
    return $query->where('deleted_at', null);
})->where('table_group_id', $tableGroupId)
    ->orderBy('id', 'ASC')
    ->get();

但是这段代码给了我一个错误。

我在这里要做的是通过将其转换为小写来比较不敏感的值。类似于此处描述的内容。https://alvinalexander.com/sql/sql-select-case-insensitive-query-queries-upper-lower/https://stackoverflow.com/a/56189431/3721034

这个错误

SQLSTATE [42883]:未定义函数:7 错误:函数 lower(json) 不存在

field_value从laravel中的json字段转换值的正确方法是什么?

标签: postgresqllaravel-7postgresql-13

解决方案


推荐阅读