| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- // +----------------------------------------------------------------------
- // | likeadmin快速开发前后端分离管理后台(PHP版)
- // +----------------------------------------------------------------------
- // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
- // | 开源版本可自由商用,可去除界面版权logo
- // | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
- // | github下载:https://github.com/likeshop-github/likeadmin
- // | 访问官网:https://www.likeadmin.cn
- // | likeadmin团队 版权所有 拥有最终解释权
- // +----------------------------------------------------------------------
- // | author: likeadminTeam
- // +----------------------------------------------------------------------
- namespace app\common\model;
- use app\common\service\FileService;
- use think\facade\Db;
- use think\Model;
- /**
- * 基础模型
- * Class BaseModel
- * @package app\common\model
- */
- class BaseModel extends Model
- {
- /**
- * @notes 公共处理图片,补全路径
- * @param $value
- * @return string
- * @author 张无忌
- * @date 2021/9/10 11:02
- */
- public function getImageAttr($value)
- {
- return trim($value) ? FileService::getFileUrl($value) : '';
- }
- /**
- * @notes 公共图片处理,去除图片域名
- * @param $value
- * @return mixed|string
- * @author 张无忌
- * @date 2021/9/10 11:04
- */
- public function setImageAttr($value)
- {
- return trim($value) ? FileService::setFileUrl($value) : '';
- }
- public static function getDb(){
- $model = new static();
- return $model->db()->getTable();
- }
- /**
- * 批量更新字段
- * [1 => ['filed1' => 'value1','filed2'=>'value2'],2=> ['filed1'=>'value1']] key为ID主键
- * 获取DB 对象并赋予 模型本身的 connection 连接
- * @return mixed
- */
- public static function updateWhenCase(array $dataMap)
- {
- if(is_array($dataMap) && count($dataMap) > 0 ) {
- // 构建 SQL 语句
- $sql = "UPDATE " . self::getDb() . " SET ";
- $uniqueFieldValues = [];
- foreach ($dataMap as $id => $data) {
- foreach ($data as $field => $value) {
- if (!isset($uniqueFieldValues[$field])) {
- $uniqueFieldValues[$field] = [];
- }
- $uniqueFieldValues[$field][] = ['id' => $id, 'value' => $value];
- }
- }
- $placeholders = [];
- foreach ($uniqueFieldValues as $field => $data) {
- $str = " `$field` = CASE id ";
- foreach ($data as $value) {
- $str .= " WHEN {$value['id']} THEN " . self::stringFilter($value['value']);
- }
- $str .= " ELSE " . $field . " END";
- $placeholders[] = $str;
- }
- $sql .= implode(', ', $placeholders);
- $sql .= " where id in (" . implode(",", array_keys($dataMap)) . ")";
- // 执行 SQL 语句
- Db::execute($sql);
- }
- }
- public static function stringFilter($string)
- {
- if(is_null($string)) {
- return 'null';
- }
- return "'" . str_replace("'","\'",$string) . "'";
- }
- }
|