快速入门


介绍

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

开始使用

一、数据库配置文件

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

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

return [
    'mysql' => [
        'default' => [
            'host' => 'localhost',
            'port' => 3306,
            'database' => 'timophp',
            'charset' => 'utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => '',
            'rw_separate' => false,
        ],
        'course' => [
            'host' => 'localhost',
            'port' => 3306,
            'database' => 'timo_course',
            'charset' => 'utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => '',
            'rw_separate' => false,
        ]
    ]
];

数据库表前缀

我这里单独提出来说一下,一般我们不推荐使用表前缀这个配置项,很多老的数据库设计都会在表名前面加一个没有含义的前缀,如“tb_”,我们不推荐这么做,那该怎么做呢?

我们一个项目可能有不同的模块,好的设计是不同模块放在不同的数据库,但是,一般项目前期都放到了一个数据库,比如,我们一个“课程”、“问答”、“用户”三个模块

,命名如下:

course
course_category
...

question
question_answer
question_category
...

user
user_info
...

二、获取数据库实例

方式一(不指定数据,将使用default数据库)

<?php

use Timo\Orm\Db;

$user = Db::table('user')->row();

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

<?php

use Timo\Orm\Db;

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

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

<?php

use Timo\Orm\Db;

$db_config = [
    'host' => 'localhost',
    'port' => 3306,
    'database' => 'timo_course',
    'charset' => 'utf8',
    'user' => 'root',
    'password' => 123456,
    'prefix' => '',
    'rw_separate' => false,
];

$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' => [ //主库
            'host' => '192.168.0.200',
            'port' => 3306,
            'database' => 'timo_course',
            'charset' => 'utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => '',
            'rw_separate' => true,
            'slave' => [ //从库
                [
                    'host' => '192.168.0.201',
                    'port' => 3306,
                    'database' => 'timo_course',
                    'charset' => 'utf8',
                    'user' => 'root',
                    'password' => 123456,
                    'prefix' => '',
                ],
                [
                    'host' => '192.168.0.202',
                    'port' => 3306,
                    'database' => 'timo_course',
                    'charset' => 'utf8',
                    'user' => 'root',
                    'password' => 123456,
                    'prefix' => '',
                ],
            ],
        ],
    ],
];