King's blog


  • 分类

  • 标签

  • 归档

  • 关于

  • 搜索

tp3 and or复合查询

发表于 2022-12-29 | 更新于: 2022-12-29 | 分类于 ThinkPHP
1
2
3
4
5
6
$where['did'] = $did;
$where['doctor_id'] = $doctor_id;
$where['_logic'] = 'or';
$map['_complex'] = $where;
$map['mcn_id'] = $mcn_id;
$doctorMcn = M("doctor_mcn")->where($map)->find();
1
2
echo M()->_sql();
select * from doctor_mcn where (did=1 or doctor_id=1) and mcn_id=8

composer镜像大全

发表于 2022-11-01 | 更新于: 2022-11-01 | 分类于 Composer

阿里云

1
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

华为云

1
composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php/

腾讯云

1
composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/

phpcomposer Composer官方镜像

1
composer config -g repo.packagist composer https://packagist.phpcomposer.com

Packagist 中国全量镜像

1
composer config -g repo.packagist composer https://php.cnpkg.org

Packagist Mirror 上海交通大学镜像

1
composer config -g repo.packagist composer https://packagist.mirrors.sjtug.sjtu.edu.cn/

element-plus form表单按回车整个页面刷新

发表于 2022-10-10 | 更新于: 2022-10-10 | 分类于 Vue
当表单只有一个文本框时,按回车将会触发表单的提交事件, 导致页面的刷新
1
2
3
4
5
6
7
8
9
10
11
<el-form :inline="true" size="large">
<el-form-item>
<el-input v-model="dataForm.q" placeholder="bean名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input placeholder="备注"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="queryHandle()">查询</el-button>
</el-form-item>
</el-form>
解决办法
  1. 在表单的提交按钮上添加 Vue 原生属性 native-type=“submit” 可以让按钮变为表单提交按钮
  2. 当表单中只有一个输入框时,按钮会默认为提交按钮
  3. 设置默认的提交按钮后需要阻止表单默认提交事件,在表单上添加 @submit.native.prevent 即可

由于Vue3废除.native 所以使用@submit.prevent

1
2
3
4
5
6
7
8
9
10
11
<el-form :inline="true" size="large" @submit.prevent>
<el-form-item>
<el-input v-model="dataForm.q" placeholder="bean名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input placeholder="备注"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="queryHandle()">查询</el-button>
</el-form-item>
</el-form>

Go SQL error converting NULL to string is unsupported

发表于 2022-09-28 | 更新于: 2022-09-28 | 分类于 Go
查询的perms字段可能存在为空的数据情况
1
2
3
4
5
6
7
func (m *MenuModel) QueryAllPerms(userId int64) (perms []string) {
sqlStr := "SELECT m.perms FROM sys_user_role ur " +
"LEFT JOIN sys_role_menu rm ON ur.role_id = rm.role_id " +
"LEFT JOIN sys_menu m ON rm.menu_id = m.menu_id " +
"WHERE ur.user_id = ?"
m.Raw(sqlStr, userId).Find(&perms).Error
}

抛异常:

1
2
sql: Scan error on column index 0, name "perms": converting NULL to string is unsupported; sql: Scan error on column index 0, name "perms": converting
NULL to string is unsupported; sql: Scan error on column index 0, name "perms": converting NULL to string is unsupported

支持 NULL 或其他未知数的数据库表列不应将 SQL 查询值保存为基本 Go 类型,而是应将其值保存到 database.sql Null 类型。 这些包括 NullString、NullBool、NullInt64、NullFloat64 和 NullTime。

解决方案,修改收的数据类型 perms []sql.NullString
1
2
3
4
5
6
7
func (m *MenuModel) QueryAllPerms(userId int64) (perms []sql.NullString) {
sqlStr := "SELECT m.perms FROM sys_user_role ur " +
"LEFT JOIN sys_role_menu rm ON ur.role_id = rm.role_id " +
"LEFT JOIN sys_menu m ON rm.menu_id = m.menu_id " +
"WHERE ur.user_id = ?"
m.Raw(sqlStr, userId).Find(&perms).Error
}

nginx配置多路径匹配和多后缀

发表于 2022-09-28 | 更新于: 2022-09-28 | 分类于 nginx
静态页面

访问static/pages目录下任意html静态文件

1
2
3
4
location ~ ^/static/pages/*.html$ {
root html;
index index.html;
}
多路径匹配

访问static/page1或者static/page2目录下的任意HTML静态文件

1
2
3
4
location ~^/static/(page1|page2)/*.html$ {
root html;
index index.html;
}
多后缀

访问static/page目录下的图片后缀为git或者jpg

1
2
3
4
location ~^/static/page/*.(git|jpg)$ {
root html;
index index.html;
}

注:~代表区分大小写的匹配模式,正则的匹配是从^开始,|表示或,可以用来匹配多路径,.表示除\n以外的任意单个字符,*` 代表前面表达式的零或多个拷贝

vite项目使用i18n

发表于 2022-09-27 | 更新于: 2022-09-27 | 分类于 Vue3

Vue3 Vite使用i18n配置国际化,就是根据它的规则自己建立一套语言字典,对于每一个字都有统一的标识,我们在文中使用该标识代替某一语言,然后它内部就会自动转为你需要查看的语言

下载安装

NPM

1
npm install vue-i18n@next
阅读全文 »

MySQL查询区分大小写

发表于 2022-09-27 | 更新于: 2022-09-27 | 分类于 MySQL

MySQL默认查询是不区分大小写的,如果需要区分大小写做查询,可以使用BINARY来区分大小写,BINARY不是函数,是类型转换运算符,用它来强制后面的字符串为一个二进制字符串,可以理解为在字符串查询的时候区分大小写

方案一、

在查询条件前加BINARY

1
SELECT * FROM t_users WHERE BINARY username='Admin';

方案二、

创建表的时候加binary

1
2
3
4
CREATE TABLE t_users 
(
username VARCHAR(30) BINARY
)

然后就可以对表的查询区分大小写了

PHP根据身份证号获取性别、年龄、生日等信息

发表于 2022-06-13 | 更新于: 2022-06-13 | 分类于 PHP

PHP根据身份证号,获取性别、年龄、生日、校验身份证号

阅读全文 »

Vue3响应式原理

发表于 2022-02-16 | 更新于: 2022-02-16 | 分类于 Vue3

vue2.x的响应式

  • 实现原理

    • 对象类型:通过Object.defineProperty()对属性的读取、修改进行拦截(数据劫持)
    • 数组类型:通过重写更新数组的一系列方法来实现拦截(对数组的变更方法进行了包裹)
  • 存在的问题

    • 新增属性、删除属性 界面不会更新
    • 直接通过下标修改数组 界面不会自动更新
    阅读全文 »

MySQL获取多个字段最大最小值

发表于 2022-02-15 | 更新于: 2022-02-15 | 分类于 MySQL

在项目中,经常会遇到取多个字段的最大或最小值来做筛选查询

  1. 取最大值

    1
    GREATEST(字段1, 字段2, 字段3, .., 字段N)
  2. 去最小值

    1
    LEAST(字段1, 字段2, 字段3, .., 字段N)
12…6
King's

King's

60 日志
15 分类
33 标签
RSS
© 2020 — 2022 King's
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.2