编程语言-PHP

thinkphp6查询 mysql中varchar类型最大值(

2021-01-12  本文已影响0人  月圆星繁

> 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();
上一篇下一篇

猜你喜欢

热点阅读