初学thinkphp6.x 第一次笔记

继承父类:

<?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';
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值