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();

© 版权声明

相关文章

暂无评论

none
暂无评论...