ThinkPHP6プロジェクトの基本操作(6.データベースDb操作)

1つは、データベース構成です。

デフォルトでは、configディレクトリにdatabase.phpファイルがあり、デフォルトのデータベース情報は次のように構成されています。

<?php

return [
    // 默认使用的数据库连接配置
    'default'         => env('database.driver', 'mysql'),

    // 自定义时间查询规则
    'time_query_rule' => [],

    // 自动写入时间戳字段
    // true为自动识别类型 false关闭
    // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
    'auto_timestamp'  => true,

    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
            'type'            => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'        => env('database.database', ''),
            // 用户名
            'username'        => env('database.username', 'root'),
            // 密码
            'password'        => env('database.password', ''),
            // 端口
            '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,
        ],

        // 更多的数据库配置信息
    ],
];

ここmysql、データベースがデフォルトで使用されており、データベース構成情報が最初envに環境構成ファイルから読み取られていることがわかります。そうでない場合は、デフォルトのパラメーターが使用されます。
.envファイルデータベース構成(独自のデータベース情報に従って変更):

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = tp6_test
USERNAME = root
PASSWORD = root
HOSTPORT = 3307
CHARSET = utf8
DEBUG = true

次に、データベースにアクセスします

1.ファサードモードを使用したDbクラス

新しいDataコントローラーを作成する場合、ここで注意する必要があるのは、facade\Db使用されるクラスです。これはTP5で使用されるクラスとはthink\Db異なります。

<?php

namespace app\controller;

use app\BaseController;
use think\facade\Db;

class Data extends BaseController
{
    
    
    public function index(){
    
    
        $result = Db::table("demo")->where("id",1)->find();
        dump($result);
    }
}

ここに写真の説明を挿入

2.コンテナ方式の使用

$result = app("db")->table("demo")->where("id",1)->find();

第三に、データベースは異常なデータデバッグを返します

1.APP_DEBUGを開きます

.env設定するには、ファイル

APP_DEBUG = true

次に、ブラウザのアクセスページの右下隅にデバッグボタンがあり、クリックしてSQLステートメントを表示します。返されたデータに問題がある場合は、生成されたSQLステートメントが間違っているかどうかを確認するか、ビジュアルデータベース管理ツールで実行できます。
ここに写真の説明を挿入
ここに写真の説明を挿入

2.SQLステートメントを出力します

fetchSql() SQLステートメントを返すことができます。

$result = Db::table("demo")->where("id",1)->fetchSql()->find();
dump($result);

ここに写真の説明を挿入

getLastSql静的メソッドを使用してSQLステートメントを取得することもできます。

$result = Db::table("demo")->where("id",1)->find();
dump(Db::getLastSql());

印刷結果は上記と同じです。

第4に、CURD操作の追加、削除、チェック、および変更

1.追加

public function add(){
    
    
    $data = [
        "username" => "wangwu",
        "password" => "789"
    ];
    $result = Db::table("demo")->insert($data);
    dump(Db::getLastSql());
    dump($result);
}

ここに写真の説明を挿入

2.削除

public function delete(){
    
    
    $result = Db::table("demo")->delete(1);
    dump(Db::getLastSql());
    dump($result);
}

ここに写真の説明を挿入

3.更新

public function update(){
    
    
    $result = Db::table("demo")->where("id","2")->update(["password"=>"abc"]);
    dump(Db::getLastSql());
    dump($result);
}

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/zy1281539626/article/details/110313357