<?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\App;
use think\Cache;
use think\Collection;
use think\Config;
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\Relation;
use think\model\relation\OneToOne;
use think\Paginator;
class Query
{
// 数据库Connection对象实例
protected $connection;
// 数据库Builder对象实例
protected $builder;
// 当前模型类名称
protected $model;
// 当前数据表名称(含前缀)
protected $table = '';
// 当前数据表名称(不含前缀)
protected $name = '';
// 当前数据表主键
protected $pk;
// 当前数据表前缀
protected $prefix = '';
// 查询参数
protected $options = [];
// 参数绑定
protected $bind = [];
// 数据表信息
protected static $info = [];
// 回调事件
private static $event = [];
// 读取主库
private static $readMaster = [];
/**
* 构造函数
* @access public
* @param Connection $connection 数据库对象实例
* @param Model $model 模型对象
*/
public function __construct(Connection $connection = null, $model = null)
{
$this->connection = $connection ?: Db::connect([], true);
$this->prefix = $this->connection->getConfig('prefix');
$this->model = $model;
// 设置当前连接的Builder对象
$this->setBuilder();
}
/**
* 利用__call方法实现一些特殊的Model方法
* @access public
* @param string $method 方法名称
* @param array $args 调用参数
* @return mixed
* @throws DbException
* @throws Exception
*/
public function __call($method, $args)
{
if (strtolower(substr($method, 0, 5)) == 'getby') {
// 根据某个字段获取记录
$field = Loader::parseName(substr($method, 5));
$where[$field] = $args[0];
return $this->where($where)->find();
} elseif (strtolower(substr($method, 0, 10)) == 'getfieldby') {
// 根据某个字段获取记录的某个值
$name = Loader::parseName(substr($method, 10));
$where[$name] = $args[0];
return $this->where($where)->value($args[1]);
} else {
throw new Exception('method not exist:' . __CLASS__ . '->' . $method);
}
}
/**
* 获取当前的数据库Connection对象
* @access public
* @return Connection
*/
public function getConnection()
{
return $this->connection;
}
/**
* 切换当前的数据库连接
* @access public
* @param mixed $config
* @return $this
*/
public function connect($config)
{
$this->connection = Db::connect($config);
$this->setBuilder();
$this->prefix = $this->connection->getConfig('prefix');
return $this;
}
/**
* 设置当前的数据库Builder对象
* @access protected
* @return void
*/
protected function setBuilder()
{
$class = $this->connection->getBuilder();
$this->builder = new $class($this->connection, $this);
}
/**
* 获取当前的模型对象实例
* @access public
* @return Model|null
*/
public function getModel()
{
return $this->model;
}
/**
* 设置后续从主库读取数据
* @access public
* @param bool $allTable
* @return void
*/
public function readMaster($allTable = false)
{
if ($allTable) {
$table = '*';
} else {
$table = isset($this->options['table']) ? $this->options['table'] : $this->getTable();
}
static::$readMaster[$table] = true;
return $this;
}
/**
* 获取当前的builder实例对象
* @access public
* @return Builder
*/
public function getBuilder()
{
return $this->builder;
}
/**
* 指定默认的数据表名(不含前缀)
* @access public
* @param string $name
* @return $this
*/
public function name($name)
{
$this->name = $name;
return $this;
}
/**
* 指定默认数据表名(含前缀)
* @access public
* @param string $table 表名
* @return $this
*/
public function setTable($table)
{
$this->table = $table;
return $this;
}
/**
* 得到当前或者指定名称的数据表
* @access public
* @param string $name
* @return string
*/
public function getTable($name = '')
{
if ($name || empty($this->table)) {
$name = $name ?: $this->name;
$tableName = $this->prefix;
if ($name) {
$tableName .= Loader::parseName($name);
}
} else {
$tableName = $this->table;
}
return $tableName;
}
/**
* 将SQL语句中的__TABLE_NAME__字符串替换成带前缀的表名(小写)
* @access public
* @param string $sql sql语句
* @return string
*/
public function parseSqlTable($sql)
{
if (false !== strpos($sql, '__')) {
$prefix = $this->prefix;
$sql = preg_replace_callback("/__([A-Z0-9_-]+)__/sU", function ($match) use ($prefix) {
return $prefix . strtolower($match[1]);
}, $sql);
}
return $sql;
}
/**
* 执行查询 返回数据集
* @access public
* @param string $sql sql指令
* @param array $bind 参数绑定
* @param boolean $master 是否在主服务器读操作
* @param bool|string $class 指定返回的数据集对象
* @return mixed
* @throws BindParamException
* @throws PDOException
*/
public function query($sql, $bind = [], $master = false, $class = false)
{
return $this->connection->query($sql, $bind, $master, $class);
}
/**
* 执行语句
* @access public
* @param string $sql sql指令
* @param array $bind 参数绑定
* @return int
* @throws BindParamException
* @throws PDOException
*/
public function execute($sql, $bind = [])
{
return $this->connection->execute($sql, $bind, $this);
}
/**
* 获取最近插入的ID
* @access public
* @param string $sequence 自增序列名
* @return string
*/
public function getLastInsID($sequence = null)
{
return $this->connection->getLastInsID($sequence);
}
/**
* 获取最近一次查询的sql语句
* @access public
* @return string
*/
public function getLastSql()
{
return $this->connection->getLastSql();
}
/**
* 执行�
没有合适的资源?快使用搜索试试~ 我知道了~
金融前端页面完整版源代码下载
共1198个文件
jpg:304个
php:292个
png:272个
需积分: 5 2 下载量 83 浏览量
2022-03-17
11:01:35
上传
评论
收藏 32.17MB RAR 举报
温馨提示
1、金融前端页面完整版源代码 2、现搭建在Thinkphp5.0框架中但是未配置数据 3、未对接数据库(可按照自己的项目去匹配数据库)
资源详情
资源评论
资源推荐
收起资源包目录
金融前端页面完整版源代码下载 (1198个子文件)
test.bmp 0B
style.css 1020KB
materialdesignicons.min.css 138KB
news.css 130KB
style.css 129KB
icomoon.css 104KB
line-awesome.min.css 88KB
animate.min.css 57KB
font-awesome.min.css 30KB
aos.min.css 28KB
sweetalert2.min.css 26KB
LineIcons.css 22KB
flaticon.css 20KB
summernote.css 18KB
themify-icons.css 17KB
fullcalendar.min.css 16KB
select2.min.css 15KB
style.css 14KB
jquery.dataTables.min.css 14KB
simple-line-icons.css 13KB
dropzone.css 12KB
chartist.min.css 11KB
bootstrap-select.min.css 10KB
style.css 9KB
daterangepicker.css 8KB
toastr.min.css 6KB
jquery.steps.css 6KB
asColorPicker.min.css 6KB
default.date.css 4KB
nouislider.min.css 4KB
styles.css 4KB
bootstrap-material-datetimepicker.css 4KB
owl.carousel.css 3KB
bootstrap-clockpicker.min.css 3KB
perfect-scrollbar.css 3KB
metisMenu.min.css 2KB
default.css 2KB
jquery.nestable.min.css 2KB
jqvmap.min.css 614B
morris.css 433B
Migration.template.php.dist 756B
Seed.template.php.dist 326B
materialdesignicons-webfont.eot 350KB
la-solid-900.eot 221KB
fontawesome-webfontd41d.eot 162KB
fontawesome-webfont3e6e.eot 162KB
la-brands-400.eot 153KB
icomoon.eot 131KB
LineIcons.eot 122KB
Flaticon.eot 107KB
themifyd41d.eot 77KB
Simple-Line-Icons4c82.eot 52KB
Simple-Line-Iconsd41d.eot 52KB
la-regular-400.eot 33KB
avasta.eot 24KB
summernote.eot 16KB
hiddeninput.exe 9KB
test.gif 233KB
loading-0.gif 6KB
newGovIcon.gif 2KB
blank.gif 42B
.gitignore 43B
.gitignore 43B
.gitignore 42B
.gitignore 35B
.gitignore 29B
.gitignore 29B
.gitignore 28B
.gitignore 16B
.gitignore 13B
.gitignore 13B
.gitignore 13B
.gitignore 13B
.gitignore 7B
.htaccess 221B
.htaccess 13B
.htaccess 13B
nginx.htaccess 0B
nginx.htaccess 0B
.htaccess 0B
index.html 89KB
form-validation-jquery.html 70KB
transactions.html 52KB
news.html 52KB
index.html 36KB
Collection.html 36KB
index.html 35KB
eborrow.html 27KB
index.html 25KB
portfolio.html 24KB
index.html 19KB
mywallet.html 18KB
head.html 18KB
news.html 18KB
index.html 12KB
index.html 11KB
register.html 9KB
info.html 8KB
index.html 7KB
index.html 7KB
共 1198 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
PHP小玩家
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0