<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 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\Cache;
use think\Collection;
use think\Config;
use think\Db;
use think\db\Builder;
use think\db\Connection;
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\Paginator;
class Query
{
// 数据库Connection对象实例
protected $connection;
// 数据库驱动类型
protected $builder;
// 当前模型类名称
protected $model;
// 当前数据表名称(含前缀)
protected $table = '';
// 当前数据表名称(不含前缀)
protected $name = '';
// 当前数据表主键
protected $pk;
// 当前表字段类型信息
protected $fieldType = [];
// 当前允许的字段列表
protected $allowField = [];
// 当前数据表前缀
protected $prefix = '';
// 查询参数
protected $options = [];
// 参数绑定
protected $bind = [];
// 数据表信息
protected static $info = [];
/**
* 架构函数
* @access public
* @param Connection $connection 数据库对象实例
* @param string $model 模型名
*/
public function __construct(Connection $connection = null, $model = '')
{
$this->connection = $connection ?: Db::connect([], true);
$this->builder = $this->connection->getConfig('builder') ?: $this->connection->getConfig('type');
$this->prefix = $this->connection->getConfig('prefix');
$this->model = $model;
}
/**
* 利用__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);
return $this;
}
/**
* 指定默认的数据表名(不含前缀)
* @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);
}
/**
* 获取最近插入的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();
}
/**
* 执行数据库事务
* @access public
* @param callable $callback 数据操作方法回调
* @return mixed
*/
public function transaction($callback)
{
return $this->connection->transaction($callback);
}
/**
* 启动事务
* @access public
* @return void
*/
public function startTrans()
{
$this->connection->startTrans();
}
/**
* 用于非自动提交状态下面的查询提交
* @access public
* @return void
* @throws PDOException
*/
public function commit()
{
$this->connection->commit();
}
/**
* 事务回滚
* @access public
* @return void
* @throws PDOException
*/
public function rollback()
{
$this->connection->rollback();
}
/**
* 批处理执行SQL语句
* 批处理的指令都认为是execute操作
* @access public
* @param array $sql SQL批处理指令
* @return boolean
*/
public function batchQuery($sql = [])
{
return $this->connection->batchQuery($sql);
}
/**
* 获取数据库的配置参数
* @access public
* @param string $name 参数名称
* @return boolean
*/
public function getConfig($name = '')
{
return $this->connection->getConfig($name);
}
/**
* 得到分表的的数�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 该项目是个人毕设项目源码,综合评分达到95分,经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 基于ThinkPHP学生宿舍公寓管理系统毕业源码案例设计 学生: 学号,姓名,性别,学生照片,生日,联系qq,手机,所在班级,所在宿舍,添加时间 班级: 班级编号,班级名称,辅导员,创建时间 宿舍: 宿舍ID,宿舍名称,床位总数,已用床位,宿舍管理员,宿舍备注,创建时间 访客: 访客ID,访客姓名,受访学生,关系,进入时间,离开时间,创建时间 ## 开发软件: PHPStorm或DW等 数据库:mysql ## 程序后台技术框架:ThinkPHP(一个MVC框架) ## 后台界面采用EasyUI框架,前台界面采用Bootstrap框架,用户浏览器和服务器全程几乎采用jquery异步加载技术!
资源推荐
资源详情
资源评论
收起资源包目录
基于ThinkPHP学生宿舍公寓管理系统+sql数据库(毕设源码).zip (367个子文件)
bootstrap.css 143KB
animate.css 54KB
font-awesome.css 37KB
bootstrap-theme.css 26KB
bootstrap-datetimepicker.css 12KB
bootstrap-datetimepicker.min.css 11KB
bootstrap-datetimepicker.min.css 11KB
bootstrap-dashen.css 3KB
index.css 2KB
style.css 2KB
admin.css 1KB
classInfo.css 1KB
fangke.css 1KB
sushe.css 1KB
student.css 1KB
desk.css 839B
bootstrapValidator.css 700B
bootstrapValidator.min.css 694B
login.css 547B
fontawesome-webfont.eot 162KB
glyphicons-halflings-regular.eot 20KB
hiddeninput.exe 9KB
.gitignore 39B
.gitignore 26B
.gitignore 13B
.htaccess 216B
.htaccess 13B
.htaccess 13B
student_frontlist.html 16KB
fangke_frontlist.html 15KB
classInfo_frontlist.html 11KB
header.html 8KB
index.html 6KB
student_query.html 4KB
fangke_query.html 3KB
sushe_query.html 3KB
classInfo_query.html 3KB
login.html 2KB
classInfo_frontshow.html 2KB
index.html 2KB
password_modify.html 2KB
footer.html 655B
favicon.ico 1KB
slide_01_2000x410.jpg 210KB
slide_01_640x340.jpg 180KB
slide_03_2000x410.jpg 110KB
slide_04_2000x410.jpg 90KB
slide_02_2000x410.jpg 70KB
slide_03_640x340.jpg 60KB
slide_04_640x340.jpg 50KB
slide_02_640x340.jpg 40KB
393059e9b516e78e7466b334c802ced1.jpg 33KB
NoImage.jpg 30KB
4b2f58232acded1167a12e6fe1a04c42.jpg 17KB
bootstrapValidator.min.js 108KB
jquery.min.js 82KB
bootstrap.js 67KB
bootstrap-datetimepicker.min.js 38KB
jsdate.js 26KB
th_TH.js 18KB
gr_EL.js 16KB
ru_RU.js 16KB
ua_UA.js 16KB
bg_BG.js 16KB
fa_IR.js 15KB
ar_MA.js 14KB
hu_HU.js 14KB
ja_JP.js 14KB
no_NO.js 13KB
he_IL.js 13KB
da_DK.js 13KB
sq_AL.js 13KB
es_ES.js 13KB
it_IT.js 13KB
es_CL.js 12KB
tr_TR.js 12KB
fr_FR.js 12KB
pt_BR.js 12KB
vi_VN.js 12KB
pt_PT.js 12KB
be_FR.js 12KB
sv_SE.js 12KB
cs_CZ.js 12KB
de_DE.js 12KB
ro_RO.js 12KB
sr_RS.js 12KB
zh_CN.js 12KB
en_US.js 12KB
pl_PL.js 12KB
zh_TW.js 12KB
id_ID.js 12KB
nl_NL.js 12KB
be_NL.js 12KB
student_manage.js 10KB
admin.js 9KB
fangke_manage.js 8KB
wow.min.js 7KB
classInfo_manage.js 7KB
student_modify.js 4KB
fangke_modify.js 3KB
共 367 条
- 1
- 2
- 3
- 4
资源评论
manylinux
- 粉丝: 4411
- 资源: 2491
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功