快速入门

 


 

介绍

TimoPHP支持操作多个数据库,框架采用单例模式来获取某个数据库实例,并且采用单例模式来获取数据库连接

 

开始使用

一、数据库配置文件

 

①单环境 /config/db.config.php

②多环境 /config/运行环境/db.config.php 如:/config/dev/db.config.php

 

return [
    'mysql' => [
        'course' => [
            'dsn' => 'mysql:host=localhost;port=3306;dbname=timo_course;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => '',
        ],
        'coupon' => [
            'dsn' => 'mysql:host=192.168.1.210;dbname=timo_coupon;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => '',
        ]
    ]
];

 

数据库表前缀

 

我这里单独提出来说一下,一般我们不推荐使用表前缀这个配置项,很多老的数据库设计都会在表名前面加一个没有含义的前缀,如“tb_”,我们不推荐这么做,那该怎么做呢? 我们一个项目可能有不同的模块,好的设计是不同模块放在不同的数据库,但是,一般项目前期都放到了一个数据库,比如,我们一个“课程”、“问答”、“用户”三个模块 ,命名如下:

 

course
course_category
...

question
question_answer
question_category
...

user
user_info
...

 

二、获取数据库实例

 

方式一(传入配置的数据库名称):

<?php

use Timo\Orm\Db;

$db = Db::connect('course'); //获取course这个数据库的实例

 

方式二(传入数据库配置数组):

<?php

use Timo\Config\Config;
use Timo\Orm\Db;

$db_config = Config::runtime('mysql.course');

$db = Db::connect($db_config);

 

三、开始操作

 

<?php

//获取某个用户
$user = $db->table('user')->where(38698)->row()
$user = $db->table('user')->where('id', 38698)->row();
$user = $db->table('user')->where('id', '=', 38698)->row();

//获取文章列表
$archives = $db->table('archive')->where('cid', '>', 3)->order('id DESC')->select()
$archives = $db->table('archive')->where(['cid' => ['>', 2], 'status' => 1])->order('id DESC')->select()

 

以上是简单列举了两个例子,更多使用方法查看数据库方法

 

读写分离支持

设置配置项rw_separate为true就开启读写分离,并且要配置slave配置项,可以配置一个或多个,如下面就配置了2个从数据库

 

配置文件

 

return [
    'mysql' => [
        'course' => [ //主库
            'dsn' => 'mysql:host=192.168.1.200;port=3306;dbname=timo_course;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => '',
            'rw_separate' => true,
            'slave' => [ //从库
                [
                    'dsn' => 'mysql:host=192.168.1.201;dbname=timophp;charset=utf8',
                    'user' => 'root',
                    'password' => 123456,
                    'prefix' => '',
                ],
                [
                    'dsn' => 'mysql:host=192.168.1.202;dbname=timophp;charset=utf8',
                    'user' => 'root',
                    'password' => 123456,
                    'prefix' => '',
                ],
            ],
        ],
    ],
];