快速入门


介绍

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

开始使用

一、数据库配置文件

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

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

  1. return [
  2. 'mysql' => [
  3. 'default' => [
  4. 'host' => 'localhost',
  5. 'port' => 3306,
  6. 'database' => 'timophp',
  7. 'charset' => 'utf8',
  8. 'user' => 'root',
  9. 'password' => 123456,
  10. 'prefix' => '',
  11. 'rw_separate' => false,
  12. ],
  13. 'course' => [
  14. 'host' => 'localhost',
  15. 'port' => 3306,
  16. 'database' => 'timo_course',
  17. 'charset' => 'utf8',
  18. 'user' => 'root',
  19. 'password' => 123456,
  20. 'prefix' => '',
  21. 'rw_separate' => false,
  22. ]
  23. ]
  24. ];

数据库表前缀

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

  1. course
  2. course_category
  3. ...
  4. question
  5. question_answer
  6. question_category
  7. ...
  8. user
  9. user_info
  10. ...

二、获取数据库实例

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

  1. <?php
  2. use Timo\Orm\Db;
  3. $user = Db::table('user')->row();

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

  1. <?php
  2. use Timo\Orm\Db;
  3. $db = Db::connect('course'); //获取course这个数据库的实例

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

  1. <?php
  2. use Timo\Orm\Db;
  3. $db_config = [
  4. 'host' => 'localhost',
  5. 'port' => 3306,
  6. 'database' => 'timo_course',
  7. 'charset' => 'utf8',
  8. 'user' => 'root',
  9. 'password' => 123456,
  10. 'prefix' => '',
  11. 'rw_separate' => false,
  12. ];
  13. $db = Db::connect($db_config);

三、开始操作

  1. <?php
  2. //获取某个用户
  3. $user = $db->table('user')->where(38698)->row()
  4. $user = $db->table('user')->where('id', 38698)->row();
  5. $user = $db->table('user')->where('id', '=', 38698)->row();
  6. //获取文章列表
  7. $archives = $db->table('archive')->where('cid', '>', 3)->order('id DESC')->select()
  8. $archives = $db->table('archive')->where(['cid' => ['>', 2], 'status' => 1])->order('id DESC')->select()

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

读写分离支持

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

配置文件

  1. return [
  2. 'mysql' => [
  3. 'course' => [ //主库
  4. 'host' => '192.168.0.200',
  5. 'port' => 3306,
  6. 'database' => 'timo_course',
  7. 'charset' => 'utf8',
  8. 'user' => 'root',
  9. 'password' => 123456,
  10. 'prefix' => '',
  11. 'rw_separate' => true,
  12. 'slave' => [ //从库
  13. [
  14. 'host' => '192.168.0.201',
  15. 'port' => 3306,
  16. 'database' => 'timo_course',
  17. 'charset' => 'utf8',
  18. 'user' => 'root',
  19. 'password' => 123456,
  20. 'prefix' => '',
  21. ],
  22. [
  23. 'host' => '192.168.0.202',
  24. 'port' => 3306,
  25. 'database' => 'timo_course',
  26. 'charset' => 'utf8',
  27. 'user' => 'root',
  28. 'password' => 123456,
  29. 'prefix' => '',
  30. ],
  31. ],
  32. ],
  33. ],
  34. ];