ThinkPHP5 模型(二:模型基类封装常用方法)

  • A+
所属分类:PHP ThinkPHP5

在   ThinkPHP5 模型(一:模型基类)中,我们介绍了模型的重要性和 一些基本方法,我们将继续对其进行扩展。

查询单条数据返回数组

/**
 * 查询单条数据
 * @param array $map 查询条件
 * @param bool $field 查询字段
 * @param array $append 追加数组
 * @return array 返回数组
 */
public function getInfoByMap($map = [], $field = true, $append = [], $order = [])
{
    if (empty($order))
    {
        //默认按主键排序
        $order = [$this->primaryKey => 'desc'];
    }
    $object = $this->where($map)->field($field)->order($order)->find();
    if (!empty($object) && !empty($append))
    {
        $return = $object->append($append);
    } else
    {
        $return = $object;
    }
    return empty($return) ? [] : $return->toArray();
}

查询数据列表返回数组

/**
 * 查询列表
 * @param array $map 查询条件
 * @param bool $field 查询字段
 * @param array $append 追加数据
 * @param string $order 排序
 * @param string $limit 分页
 * @return array 返回数据
 */
public function getListByMap($map = [], $field = true, $append = [], $order = '', $limit = '')
{
    if (empty($order))
    {
        //默认按主键排序
        $order = [$this->primaryKey => 'desc'];
    }
    if (!empty($limit))
    {
        $object_list = $this->where($map)->field($field)->order($order)->limit($limit)->select();
    } else
    {
        $object_list = $this->where($map)->field($field)->order($order)->select();
    }
    $list = [];
    if (!empty($object_list))
    {
        foreach ($object_list as $item => $value)
        {
            if (!empty($append))
            {
                $list[] = $value->append($append)->toArray();
            } else
            {
                 $list[] = $value->toArray();
            }
        }
    }
    return $list;
}

查询数据条数(分页)

/**
 * 查询数据条数
 * @param array $map 查询条件
 * @return int|string
 */
public function getCountByMap($map = [])
{
    return $this->where($map)->count();
}

查询单条数据返回对象

/**
 * 查询单条数据返回对象
 * @param array $map 查询条件
 * @param bool $field 查询字段
 * @param array $append 追加器
 * @return object 返回对象
 */
public function getObjInfoByMap($map = [], $field = true, $append = [])
{
    $object = $this->where($map)->field($field)->find();
    if (!empty($object) && !empty($append))
    {
        return $object->append($append);
    } else
    {
        return $object;
    }
}

批量保存数据

/**
 * 批量保存数据
 * @param $data  数据
 * @return bool
 */
public function batchSaveData($data)
{
    $this->isUpdate(false)->saveAll($data);
    return true;
}

判断数据是否存在否则添加

/**
 * 判断数据是否存在否则执行添加
 * @param $map 判断条件
 * @param array $extra_data 额外的数据
 * @param boole $is_strict 是否严格判断 true 时,如果数据存在,返回false
 * @return false|int|mixed
 */
public function isExistElseAdd($map, $extra_data = [], $is_strict = false)
{
    $info = $this->getInfoByMap($map);
    if (!empty($info))
    {
        if ($is_strict)
            return false;
        return $info[$this->primaryKey];
    } else
    {
        $data = array_merge($map, $extra_data);
        return $this->createData($data);
    }
}

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: