<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\db;
use PDO;
use think\Collection;
use think\Container;
use think\Db;
use think\db\exception\BindParamException;
use think\db\exception\DataNotFoundException;
use think\db\exception\ModelNotFoundException;
use think\Exception;
use think\exception\DbException;
use think\exception\PDOException;
use think\Loader;
use think\Model;
use think\model\Collection as ModelCollection;
use think\model\Relation;
use think\model\relation\OneToOne;
use think\Paginator;
class Query
{
/**
* 当前数据库连接对象
* @var Connection
*/
protected $connection;
/**
* 当前模型对象
* @var Model
*/
protected $model;
/**
* 当前数据表名称(不含前缀)
* @var string
*/
protected $name = '';
/**
* 当前数据表主键
* @var string|array
*/
protected $pk;
/**
* 当前数据表前缀
* @var string
*/
protected $prefix = '';
/**
* 当前查询参数
* @var array
*/
protected $options = [];
/**
* 当前参数绑定
* @var array
*/
protected $bind = [];
/**
* 事件回调
* @var array
*/
private static $event = [];
/**
* 扩展查询方法
* @var array
*/
private static $extend = [];
/**
* 读取主库的表
* @var array
*/
protected static $readMaster = [];
/**
* 日期查询表达式
* @var array
*/
protected $timeRule = [
'today' => ['today', 'tomorrow'],
'yesterday' => ['yesterday', 'today'],
'week' => ['this week 00:00:00', 'next week 00:00:00'],
'last week' => ['last week 00:00:00', 'this week 00:00:00'],
'month' => ['first Day of this month 00:00:00', 'first Day of next month 00:00:00'],
'last month' => ['first Day of last month 00:00:00', 'first Day of this month 00:00:00'],
'year' => ['this year 1/1', 'next year 1/1'],
'last year' => ['last year 1/1', 'this year 1/1'],
];
/**
* 日期查询快捷定义
* @var array
*/
protected $timeExp = ['d' => 'today', 'w' => 'week', 'm' => 'month', 'y' => 'year'];
/**
* 架构函数
* @access public
*/
public function __construct(Connection $connection = null)
{
if (is_null($connection)) {
$this->connection = Db::connect();
} else {
$this->connection = $connection;
}
$this->prefix = $this->connection->getConfig('prefix');
}
/**
* 创建一个新的查询对象
* @access public
* @return Query
*/
public function newQuery()
{
return new static($this->connection);
}
/**
* 利用__call方法实现一些特殊的Model方法
* @access public
* @param string $method 方法名称
* @param array $args 调用参数
* @return mixed
* @throws DbException
* @throws Exception
*/
public function __call($method, $args)
{
if (isset(self::$extend[strtolower($method)])) {
// 调用扩展查询方法
array_unshift($args, $this);
return Container::getInstance()
->invoke(self::$extend[strtolower($method)], $args);
} elseif (strtolower(substr($method, 0, 5)) == 'getby') {
// 根据某个字段获取记录
$field = Loader::parseName(substr($method, 5));
return $this->where($field, '=', $args[0])->find();
} elseif (strtolower(substr($method, 0, 10)) == 'getfieldby') {
// 根据某个字段获取记录的某个值
$name = Loader::parseName(substr($method, 10));
return $this->where($name, '=', $args[0])->value($args[1]);
} elseif (strtolower(substr($method, 0, 7)) == 'whereor') {
$name = Loader::parseName(substr($method, 7));
array_unshift($args, $name);
return call_user_func_array([$this, 'whereOr'], $args);
} elseif (strtolower(substr($method, 0, 5)) == 'where') {
$name = Loader::parseName(substr($method, 5));
array_unshift($args, $name);
return call_user_func_array([$this, 'where'], $args);
} elseif ($this->model && method_exists($this->model, 'scope' . $method)) {
// 动态调用命名范围
$method = 'scope' . $method;
array_unshift($args, $this);
call_user_func_array([$this->model, $method], $args);
return $this;
} else {
throw new Exception('method not exist:' . ($this->model ? get_class($this->model) : static::class) . '->' . $method);
}
}
/**
* 扩展查询方法
* @access public
* @param string|array $method 查询方法名
* @param callable $callback
* @return void
*/
public static function extend($method, $callback = null)
{
if (is_array($method)) {
foreach ($method as $key => $val) {
self::$extend[strtolower($key)] = $val;
}
} else {
self::$extend[strtolower($method)] = $callback;
}
}
/**
* 设置当前的数据库Connection对象
* @access public
* @param Connection $connection
* @return $this
*/
public function setConnection(Connection $connection)
{
$this->connection = $connection;
$this->prefix = $this->connection->getConfig('prefix');
return $this;
}
/**
* 获取当前的数据库Connection对象
* @access public
* @return Connection
*/
public function getConnection()
{
return $this->connection;
}
/**
* 指定模型
* @access public
* @param Model $model 模型对象实例
* @return $this
*/
public function model(Model $model)
{
$this->model = $model;
return $this;
}
/**
* 获取当前的模型对象
* @access public
* @return Model|null
*/
public function getModel()
{
return $this->model ? $this->model->setQuery($this) : null;
}
/**
* 设置从主库读取数据
* @access public
* @param bool $all 是否所有表有效
* @return $this
*/
public function readMaster($all = false)
{
$table = $all ? '*' : $this->getTable();
static::$readMaster[$table] = true;
return $this;
}
/**
* 指定当前数据表名(不含前缀)
* @access public
* @param string $name
* @return $this
*/
public function name($name)
{
$this->name = $name;
return $this;
}
/**
* 获取当前的数据表名称
* @access public
* @return string
*/
public function getName()
{
return $this->name ?: $this->model->getName();
}
/**
* 得到当前或者指定名称的数据表
* @access public
* @param string $name
* @return string
*/
public function getTable($name = '')
{
if (empty($name) && isset($this->options['table'])) {
return $this->options['table'];
}
$name = $name ?: $this->name;
return $this->prefix . Loader::parseName($name);
}
/**
* �
没有合适的资源?快使用搜索试试~ 我知道了~
php多商户个码免签系统源码带APP+PC监控
共1234个文件
php:520个
js:215个
gif:95个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 30 浏览量
2022-07-01
11:48:42
上传
评论
收藏 269.52MB ZIP 举报
温馨提示
需要挂APP监控或者PC监控,QQ执行设置访问URL任务即可实现回调 监控软件有PC版和2个APP监控 系统为多商户管理,商户额度控制 充值额度设置 订单时间设置 商户购买套餐设置 注册设置 域名设置(单独通道域名) 公告设置 商户通道管理等。
资源推荐
资源详情
资源评论
收起资源包目录
php多商户个码免签系统源码带APP+PC监控 (1234个子文件)
APP╝р┐╪╢╦.apk 3.76MB
APP监控端.apk 3.76MB
监控端V2.apk 1.94MB
微信-云监控端.apk 590KB
document.CHM 679KB
admin.css 96KB
layui.css 73KB
notice.css 61KB
skin.min.css 54KB
skin.min.css 54KB
ueditor.css 44KB
main.css 35KB
font-awesome.min.css 30KB
main.css 28KB
main.css 24KB
skin.mobile.min.css 21KB
skin.mobile.min.css 21KB
content.min.css 17KB
content.inline.min.css 17KB
content.inline.min.css 17KB
content.min.css 17KB
video.css 15KB
layer.css 14KB
layer.css 14KB
main.min.css 14KB
introJs.css 12KB
dropdown.css 11KB
layui.mobile.css 10KB
theme-all.css 9KB
main.css 7KB
laydate.css 7KB
paybtn.css 7KB
steps.css 7KB
toastr.min.css 7KB
metroStyle.css 7KB
zTreeStyle.css 6KB
wechat_pay.css 6KB
Cropper.css 5KB
pay.css 5KB
cascader.css 5KB
scrawl.css 4KB
main.min.css 3KB
city-picker.css 3KB
codemirror.css 3KB
tagsInput.css 3KB
background.css 2KB
main.css 2KB
main.css 2KB
emotion.css 2KB
dialogbase.css 2KB
dialogbase.css 2KB
Split.css 2KB
main.min.css 1KB
content.min.css 1KB
code.css 1KB
content.min.css 1KB
main.min.css 1004B
content.min.css 985B
content.min.css 964B
content.mobile.min.css 551B
content.mobile.min.css 551B
webuploader.css 515B
noscript.css 205B
iframe.css 42B
dialogbase.css 0B
phpunit.xml.dist 1KB
phpunit.xml.dist 893B
phpunit.xml.dist 892B
phpunit.xml.dist 335B
phpunit.xml.dist 335B
phpunit.xml.dist 304B
HPSocket4C.dll 1.79MB
call.dll 796KB
Skin.dll 87KB
iconfont.eot 46KB
WeChatSetup.exe 146.83MB
AliIM_taobao_(9.12.10C).exe 70.59MB
V免签监控端.exe 3.63MB
ChromeSetup.exe 1.26MB
UEditorSnapscreen.exe 508KB
hiddeninput.exe 9KB
jxface2.gif 40KB
jxface2.gif 40KB
ic_loading.gif 14KB
59.gif 10KB
22.gif 10KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
zTreeStandard.gif 5KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
21.gif 5KB
共 1234 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
办公模板库素材蛙
- 粉丝: 1660
- 资源: 2299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功