当前位置: 首页 > article >正文

fastadmin操作数据库字段为json、查询遍历each、多级下拉、union、php密码设置、common常用函数的使用小技巧

数据库中遇到的操作

查询字段是json的某个值

 //获取数据库中某个字段是json中得某个值,进行查询,goods是表中字段,brand_id是json中要查詢的字段。
 //数据类型一定要对应要不然查询不出来。
 $map['json_extract(goods, "$.brand_id")'] = (int)$params['brand_id']; 

查询结果进行遍历操作:

db('product_plant')->where($map)
	->order('id', 'desc')
	->paginate($limit)
	->each(function ($item, $key) use ($store_id) {
		//代码逻辑
  • 多级下拉
if (isset($params['cat']) && !empty($params['cat'])) {
     if (count($params['cat']) == 1) {
         $shop_cat_array = model('store_category')->where(['pid'=>$params['cat'][0], 'store_id'=>$this->auth->id])->column('id');
         $cat = model('store_category')->where('pid', 'in', $shop_cat_array)->where('store_id', $this->auth->id)->column('id');
         $map['shop_cat'] = ['in', $cat];
     }
     else if (count($params['cat']) == 2) {
         $cat = model('store_category')->where(['pid'=>$params['cat'][1], 'store_id'=>$this->auth->id])->column('id');
         $map['shop_cat'] = ['in', $cat];
     }
     else {
         $map['shop_cat'] = $params['cat'][2];
     }
 }

UNION的使用


$field = 'p.id';
$sql = db('product')->alias('p')->field($field)->where($where)->union(function ($query) use ($where,$field) {
	$query->name('store_product')->alias('p')->field($field)->where($where);
}, true)->buildSql();
$model = Db::table($sql . ' as a');
$productIds = $model->column('id');
$map['product_id'] = ['in', $productIds];



//获取当前域名
//$domian = $this->request->domain()

//array_merge可以写在where条件里整合
//$bill_money = db('store_bill')->where(array_merge(['comein'=>1],$w))->sum('price')
//            -db('store_bill')->where(array_merge(['comein'=>0],$w))->sum('price');

查看数据库中json字段不符合json结构的:

-- 不符合json结构不能使用json_container()
	SELECT * 
	FROM hzqc_product_plant 
	WHERE JSON_VALID(goods) = 0;

SELECT * FROM `hzqc_product_plant` WHERE  `store_id` = 91000003  AND json_extract(goods, "$.brand_id") = 6074
SELECT * FROM `hzqc_product_plant` WHERE  `store_id` = 91000003  AND goods->'$."brand_id"' = 6074;

php密码设置

$params['salt'] = Random::alnum();
$params['password'] = md5(md5($params['password']) . $params['salt']);
  • 常用的一些东西可以放到common.php中,在使用的时候直接调用
if (!function_exists('cdnurl')) {
    /**
     * 获取上传资源的CDN的地址
     * @param string $url 资源相对地址
     * @return string
     */
    function cdnurl($url) {
        return preg_match("/^https?:\/\/(.*)/i", $url) ? $url : think\Config::get('upload.cdnurl') . $url;
    }
}

//常用常量参数也可以放到common中
if (!function_exists('mall_payment_type')) {
    function mall_payment_type($code = '9') {
        $result = ['wechat'=>'微信支付', 'alipay'=>'支付宝', 'credit'=>'信用支付', 'transfer'=>'对公转账', 'deposit'=>'预付款', 'zero'=>'零元领取礼包', 'mixed'=>'混合支付'];
        return ($code == '9') ? $result : $result[$code]??"";
    }
}

//随机获取一个IP
if (!function_exists('rand_id')) {
    function rand_id(){
        $data = array(
            119.120.'.'.rand(1,255).'.'.rand(1,255),
            124.174.'.'.rand(1,255).'.'.rand(1,255),
            116.249.'.'.rand(1,255).'.'.rand(1,255),
            118.125.'.'.rand(1,255).'.'.rand(1,255),
            42.175.'.'.rand(1,255).'.'.rand(1,255),
            124.162.'.'.rand(1,255).'.'.rand(1,255),
            211.167.'.'.rand(1,255).'.'.rand(1,255),
            58.206.'.'.rand(1,255).'.'.rand(1,255),
            117.24.'.'.rand(1,255).'.'.rand(1,255),
            203.93.'.'.rand(1,255).'.'.rand(1,255),
        );
        //随机获取一个IP地址
        $ip = $data[array_rand($data)];
        return $ip;
    }
}




http://www.kler.cn/a/401070.html

相关文章:

  • 5G与4G互通的桥梁:N26接口
  • 高效工具推荐:基于WebGPU的Whisper Web结合内网穿透远程使用指南
  • 【电子设计】按键LED控制与FreeRTOS
  • STM32串口——5个串口的使用方法
  • Linux:调试器-gdb/cgdb
  • 【售前方案】工业园区整体解决方案,智慧园区方案,智慧城市方案,智慧各类信息化方案(ppt原件)
  • 【原创】java+ssm+mysql成绩统计分析管理系统设计与实现
  • 神经网络与Transformer详解
  • VueDPlayer视频插件的使用
  • thinkphp6安装php-mqtt/client,并实现实时消息收发写入日志
  • web——upload-labs——第十一关——黑名单验证,双写绕过
  • 【WSL+Kali】进行系统升级时在 Setting up libc6:amd64 (2.37-15) ... 卡住不动
  • CSS 样式覆盖规则?
  • Java-03 深入浅出 MyBatis - 快速入门(无 Spring) 增删改查 核心配置讲解 XML 与 注解映射
  • 联想 ThinkPad的高级键盘功能
  • php消息路由
  • React Native 全栈开发实战班 - 性能与调试之打包与发布
  • 什么是‌‌‌‌‌‌SQL,有什么特点
  • 数据库的性能优化 -- SQL性能优化
  • 【DBA攻坚指南:左右Oracle,右手MySQL-学习总结】
  • 面向对象几个自测题
  • 新能源汽车领域的磁集成解决方案及挑战
  • 鸿蒙网络编程系列49-仓颉版TCP客户端
  • 【Three.js】实现天空盒效果
  • Django模型关系之一对一
  • 设计模式之插件模式