thinkphp6查询 mysql中varchar类型最大值(Convert)及 find_in_set的用法

> mysql中varchar类型最大值

需要转换字段类型用到 Convert,而不是直接使用 max(),查询的结果会有差别。
在thinkphp6中配合 fieldRaw() 使用

class GoodsUnit extends Model
{
    /**
     * 获取单位编号最大值
     * @param $orgId
     * @return int
     */
    public function getMaxNumber($orgId)
    {
        $number = $this->where(["org_id" => $orgId])->fieldRaw("max(Convert(serial_number,SIGNED)) as max_number")->select()->toArray();
        $number = $number[0]['max_number'];
        $number = !empty($number) ? (int)$number + 1 : 1;
        $serial_number = str_pad($number, 3, '0', STR_PAD_LEFT);
        return $serial_number;
    }
}

> thinkphp6中使用 find_in_set(),使用whereRaw()

/*
     * 获取商品列表
     */
    public function getListWithWhere($params)
    {
        $salesTypeWhere = '';
        if (isset($params['salesType']) && !empty($params['salesType'])) {
            $salesType = implode(',', $params['salesType']);;
            $salesTypeWhere = "FIND_IN_SET('{$salesType}', sales_type)";
        }
        $sqlModel = M(....);
        if (!empty($salesTypeWhere)) {
            $sqlModel = $sqlModel->whereRaw($salesTypeWhere);
        }
        $list = $sqlModel->limit($pageStart, $pageSize)
            ->group("sk.id")
            ->fetchSql(false)
            ->select();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容