继承父类:
<?php
namespace app\controller;
use app\BaseController;
Class Test extends BaseController
{
public function index()
{
return 'index,方法名:'.$this->request->action().'<br>'.'当前实际路径'.$this->app->getBasePath();
}
public function arrayOutput()
{
$data = ['a'=>1,'b'=>2,'c'=>3];
return json($data);
}
}
空控制器的用法:
定义一个空控制器,以后访问错误的控制器时就会提示和自定义的这个内容
<?php
namespace app\controller;
Calss Error
{
public function index()
{
returnn '当前控制器不存在';
}
}
env('database.prefix', ''),","marks":[]}]}],"state":{}}]'>
连接数据库时:
比如user表:有u_id,u_name,u_password
只需要修改'prefix' => env('database.prefix', ''),
'prefix' => env('database.prefix', 'u_'),
这样每次就不用再输入u_
只需要用后面的就可以
thinkphp6.x数据库的连接
里面有两个文件config->database
.example.env
在config->database里面有个默认的数据库名称,而.example.env没有,
报错有可能在这里出现,这里要自己注意
.example.env这个文件的优先级比较高
理论上修改这个就可以
但是作为初学者就不要偷懒
建议都试试
.example.env的配置如下:
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = mz
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
database的配置如下:
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', 'mz'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', 'root'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', ''),
测试连接的controller的php文件如下:
datatest.php
<?php
namespace app\controller;
use think\facade\Db;
Class DataTest
{
public function index()
{
$user=Db::table('users')->select();
return json($user);
}
}
其中,table()里面的为表名
关于php为啥不报错误原因:
只需把config->app.php的
'show_error_msg' => false,//的false改成true
切换数据库:
有两个数据库
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', 'mz'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', 'root'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', ''),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
],
'demo' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database2', 'demo'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', 'root'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', ''),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
],
注意,二者的差别在于database2
.example.env里面再加一个database
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = mz
DATABASE2 = demo
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
demo未改变前:
public function demo()
{
$user=Db::table('users')->select();
return json($user);
}
在这里把方法改成:
public function demo()
{
$user=Db::connect('demo')->table('users')->select();
return json($user);
}
模型初探:
model写在app文件夹下
比如你的表里面有个users就建一个model->Users.php,可以不用什么方法不用写什么,就把它定义出来,这样这个model就能存入你数据库的所有数据了,但是要继承父类Model,use think\model,这么接下来看看效果图吧。
Model->Users.php
<?php
namespace app\model;
use think\Model;
Class Users extends Model
{
}
DataBase->gerUser()
public function getUser()
{
$user=Users::select();
return json($user);
}
如何使用模型切换数据库??
只需在模型里面写个受保护的属性:
<?php
namespace app\model;
use think\Model;
Class Users extends Model
{
protected $connection ='demo';
}