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