«
thinkphp 常用方法

时间:2024-3-26    作者:熊永生    分类: thinkphp


thinkphp 常用方法

根据id获取上级

示例: return $this->getUpById(8);
/**
* 递归根据id获取上级
*/
public function getUpById($id, &$result = [])
{
// 根据传入的ID查询当前数据
$currentData = $this->where('id', $id)->find();
if ($currentData) {
// 将当前数据加入结果数组
$result[] = $currentData;
// 如果当前数据有pid,则递归查询上级数据
if ($currentData['pid'] !== 0) {
$this->getUpById($currentData['pid'], $result);
}
}
// 返回结果数组
return array_reverse($result);
}

将数组中指定键名的值用分隔符连接成字符串

示例: return  arrayToString($arr,'name','#');
/**
* 将数组中指定键名的值用分隔符连接成字符串
* example: arrayToString($arr,'name','#')
*/
public function arrayToString($arr, $key, $separator)
{
$tempArr = [];
foreach ($arr as $k=>$v){
if(isset($v[$key])){
$tempArr[] = $v[$key];
}
}
return implode($separator, $tempArr);
}

查找数组对象中最小的值 并返回该对象


示例: return $this->findObjectWithExtArr($numberTemplate,'level','min');
/**
* 查找数组对象中最小的值 或者最小的值 并返回该对象
* @param string $type max:取最大 min:取最小
*/
function findObjectWithExtArr($arr, $field, $type = 'max')
{
$compareValue = $type != 'max' ? PHP_INT_MAX : PHP_INT_MIN;
$resultObject = null;
foreach ($arr as $item) {
    if ($type != 'max') {
        if ($item[$field] < $compareValue) {
            $compareValue = $item[$field];
            $resultObject = $item;
        }
    } else {
        if ($item[$field] > $compareValue) {
            $compareValue = $item[$field];
            $resultObject = $item;
        }
    }
}

return $resultObject;

}

> 多维对象转一维对象

/**

Db查询去重 goods_id 去重

$db = $this->OrderGoodsModel->where($where)
->field('ANY_VALUE(name) as name, ANY_VALUE(`desc`) as `desc`, ANY_VALUE(id) as id, goods_id')
->group('goods_id')
->select();

Db查询字符串数组存在的id 比如 3,5,5,7,8 查询5的列表

$arr = $this->GoodsModel->where(['type'=>2])->whereRaw("FIND_IN_SET(".$goods['id'].", goods_ids) > 0")->select();