【TP3.2】跨库操作和跨域操作
一、跨库操作:(同一服务器,不同的数据库)
假设UserModel对应的数据表在数据库user下面,而InfoModel对应的数据表在数据库info下面,那么我们只需要进行下面的设置即可。
class UserModel extends Model {
protected $dbName = 'user';
}
class InfoModel extends Model {
protected $dbName = 'info';
}
在进行查询的时候,系统能够自动添加当前模型所在的数据库名。
$User = D('User');
$User->select();
echo $User->getLastSql();
// 输出的SQL语句为 select * from user.think_user ,前缀不用管,在配置文件里面
模型的表前缀取的是项目配置文件定义的数据表前缀,如果跨库操作的时候表前缀不是统一的,那么我们可以在模型里面单独定义表前缀,例如:
protected $tablePrefix = 'other_';
如果你没有定义模型类,而是使用的M方法操作的话,也可以支持跨库操作,例如:
$User = M('user.User','other_');
上面表示:user库,other_User表
二、跨域操作:(不同服务器,不同数据库)
用法很简单, 只需要调用Model类的db方法,用法:
Model->db("数据库编号","数据库配置");
1)在Model类(XXModel.class.php)里面使用:
$this->db(1,"mysql://root:123456@localhost:3306/test")->query("查询SQL");
//或者
$this->db(1,"DB_CONFIG1")->query("查询SQL");
$this->db(2,"DB_CONFIG2")->query("查询SQL");
//或者指定表进行其他操作
$this->db(1)->table("top_user")->find();
2)在控制器类(Controller.class.php)里面使用:
$obj = M('deal_item','xxf_','DB_CONFIG2');
$list = $obj->select('132');
3)可以预先在公共配置文件,进行配置,如下:
//数据库配置1
'DB_CONFIG1' = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp'
),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp';
以上三种,推荐2)+3)
【TP3.2】跨库操作和跨域操作的更多相关文章
- 如何玩转跨库Join?跨数据库实例查询应用实践
背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型以满足其业务需求.原本在同一数据库实例里就能实现的SQL查询,现在需要跨多 ...
- SQL Server实现跨库查询(跨库select insert)
方法一: select * from servername.dbo.tablename 方法二: select * from OPENDATASOURCE( 'SQLOLEDB', ...
- SqlServer跨库查询
由于业务的拆分,数据库拆分为两种作用: 汇总数据库(Master,头节点数据库), 子节点数据库(Compute Node,计算子节点数据库) 这样,就设计到子节点访问头节点数据库中的某张汇总表,这种 ...
- sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。
用sql server自带的消息队列service borker,调用存储过程中,执行了一个跨库的操作,先是用了一个用户,权限什么都给够了,但是一直提示 服务器主体 "user" ...
- 浅谈配置chrome浏览器允许跨域操作的方法
浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...
- php 进行跨域操作
本地配置两个域名: http://www.concent.com 主域名 http://s.concent.com/ 子域名 在主域名下添加跨域代码: ini_set('session ...
- 【学亮IT手记】Ajax跨域问题精讲--jQuery解决跨域操作
什么是跨域 跨域,它是不同的域名(服务器)之间的相互的资源之间的访问. 当协议,域名,端口号任意一个不同,它们就是不同的域. 正常情况下,因为浏览器安全的问题,不同域之间的资源是不可以访问的. 跨域的 ...
- 使用jquery进行跨域操作
ajax默认是不支持跨域操作的,只能提交跨域请求,无法获得响应.而可以用$.getScript()函数来进行跨域操作.代码如下: <button id="btnTest"&g ...
- sql server 跨库操作
SELECT *FROM OPENDATASOURCE('SQLOLEDB','Data Source=sql服务器名;User ID=用户名;Password=密码;').PersonDb.dbo. ...
随机推荐
- CVS环境搭建
1.下载cvsnt(可以从附件中下载) 2.安装cvsnt 直接双击运行cvsnt安装文件,安装过程中可以选择以经典.自定义和完全三种方式安装,在自定义方式中可以选择安装路径.安装完成后,在控 ...
- T4 生成实体和简单的CRUD操作
<#@ template debug="false" hostspecific="false" language="C#" #> ...
- TextView设置最多显示指定个字符,超过部分显示...(省略号)
今天在公司遇到一个需求:TextView设置最多显示8个字符,超过部分显示...(省略号),网上找了很多资料,有人说分别设置TextView的android:signature="true& ...
- python植入后门backdoor程序的方法?
后门程序 from gevent.backdoor import BackdoorServer server = BackdoorServer((), banner="Hello from ...
- HTML常用标记
HTML文档由4个主要标记组成,这4个标记是<html>.<head>.<title>和<body>.举例如下: <html> <he ...
- C语言:字符串输出流输出文件中的数据。
#include<stdio.h> #include<string.h> int main() { //定义文件指针 FILE *f = NULL; //打开文件 f = fo ...
- go语言基础之同级目录
1.同级目录 分文件编程(多个源文件),必须放在src目录 同一个目录,包名必须一样 设置GOPATH环境变量 go env 查看go相关环境路径 GO PATH: 在windows系统中,添加go环 ...
- 你对position的了解有多少?
此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...
- vue-router登录校验后跳转到之前指定页面如何实现
两个需求:1.用户点击购买需要下单,并跳转到订单页面,但是如果用户没有登录的话,中间有登录验证,会拦截:2.点击购买的时候,登录校验成功了,跳转到订单页面时,订单已创建,去付款即可.3.处理拦截至登录 ...
- liunx step by step(3)
由于我的ubuntu是装载在virtualbox的虚拟机中,怎么实现其中的数据的共享,显得非常的必要:额,具体这么办. 1.安装增强功能.挂载光盘. 打开其相应的终端:fantlam@fantlam- ...