多个数据库,某个数据库,某个表,字段;
分布式数据库;
切换数据库;
连接数据库;
模型实例化(模型定义);
字段;
分布式数据库
'DB_DEPLOY_TYPE'=> 1, //分布式数据库配置定义
'DB_TYPE' => 'mysql', // 设置分布式数据库支持
'DB_HOST' => '192.168.0.1,192.168.0.2', 'DB_NAME' => 'thinkphp', //分布式数据库类型必须相同
'DB_USER' => 'user1,user2',//如果相同可以不用定义多个
'DB_PWD' => 'pwd1,pwd2',
'DB_PORT' => '3306',
'DB_PREFIX' => 'think_',
切换数据库
Model->db("数据库编号","数据库配置");
$this->db(1,"mysql://root:123456@localhost:3306/test")->query("查询SQL");
$this->db(1)->query("查询SQL");
$this->db(1)->table("top_user")->find();
连接数据库
三种方式:
- 配置文件
//数据库配置信息 'DB_TYPE' => 'mysql',
// 数据库类型 'DB_HOST' => '127.0.0.1',
// 服务器地址 'DB_NAME' => 'thinkphp',
// 数据库名 'DB_USER' => 'root',
// 用户名 'DB_PWD' => '123456',
// 密码 'DB_PORT' => 3306,
// 端口 'DB_PREFIX' => 'think_',
// 数据库表前缀 'DB_CHARSET'=> 'utf8',
// 字符集 'DB_DEBUG' => TRUE,
// 数据库调试模式 开启后可以记录SQL日志
- 定义模型类
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $connection = array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => '1234', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name' => 'thinkphp', 'db_charset' => 'utf8', );
}
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $connection ='mysql://root:1234@localhost:3306/thinkphp#utf8';
}
//数据库配置1
'DB_CONFIG1' => array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => '1234', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name' => 'thinkphp', 'db_charset'=> 'utf8', ),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $connection = 'DB_CONFIG1';
}
- 实例化
$User = M('User','other_','mysql://root:1234@localhost/demo#utf8');
$User = M('User','other_','DB_CONFIG2');
模型实例化三种方式:
- 直接实例化;
$User = new \Home\Model\UserModel();
$Info = new \Admin\Model\InfoModel();
$New = new \Home\Model\NewModel('blog','think_',$connection); // 带参数实例化
- M;
可以不定义模型类;
$User = M('User');
$New = M('new','think_',$connection);
- D;
$User = D('User');
区别:D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。
- 实例化空模型类
如果你仅仅是使用原生SQL查询的话,不需要使用额外的模型类.
$Model = new Model();
模型定义:
正确地定义模型类,可以找到要操作的数据表;
网友评论