ThinkPHP6 を使用して ORM を実装し、データベース操作を自動的に検証する方法

王林
リリース: 2023-06-20 21:12:24
オリジナル
1684 人が閲覧しました

Web アプリケーションの機能が増加し続けるにつれて、開発者はデータベース検証ルールの作成に多くの時間を費やす必要があることがよくあります。 ORM (オブジェクト リレーショナル マッピング) フレームワークを使用すると、データベース検証ルールとビジネス ロジックを分離できるため、時間を節約し、開発効率を向上できます。その中で、ThinkPHP6 は自動検証機能を提供しており、ORM 自動検証データベース操作を迅速に実装するのに役立ちます。次に、ThinkPHP6 を使用して ORM 自動検証データベース操作を実装する方法を紹介します。

  1. ThinkPHP6 のインストール

まず、ThinkPHP6 をインストールする必要があります。次のコマンドで Composer を使用して ThinkPHP6 をインストールできます:

composer create-project topthink/think tp6 --prefer-dist

もちろん、次のコマンドを実行することもできます。 ThinkPHP6 公式サイト (https://www.thinkphp.cn) へ 最新のフレームワークのソースコードをダウンロードします。

  1. データベース接続の構成

ORM 自動検証を実装する前に、まずデータベース接続を構成する必要があります。これは、プロジェクト ルート ディレクトリの config/database.php で構成できます。例:

return [
    // 数据库类型
    'type'            => 'mysql',
    // 数据库连接DSN配置
    'dsn'             => '',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'test',
    // 数据库用户名
    'username'        => 'root',
    // 数据库密码
    'password'        => 'password',
    // 数据库连接端口
    'hostport'        => '3306',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => '',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 是否自动写入时间戳字段
    'auto_timestamp'  => false,
    // 是否需要进行SQL性能分析
    'sql_explain'     => false,
    // 开启断线重连
    'break_reconnect' => true,
];
ログイン後にコピー
  1. モデルの作成と使用

ThinkPHP6 の場合、モデルを使用してデータベースと対話します。次のコマンドを使用してモデルを作成できます:

php bin/think make:model Test

このコマンドは app に作成されます。ディレクトリ Test.php ファイルには、空のモデル クラス Test が含まれています。このクラスでは、データベース操作テーブル名、主キー名、自動タイムスタンプ、その他の定義を指定できます。例:

<?php
namespace appmodel;
use thinkModel;
class Test extends Model
{
    // 指定表名
    protected $table = 'test';
    // 指定主键名
    protected $pk = 'id';
    // 自动时间戳
    protected $autoWriteTimestamp = true;
}
ログイン後にコピー

このモデル クラスでは、いくつかのデータ検証ルールも定義できます。例:

<?php
namespace appmodel;
use thinkModel;
class Test extends Model
{
    // 指定表名
    protected $table = 'test';
    // 指定主键名
    protected $pk = 'id';
    // 自动时间戳
    protected $autoWriteTimestamp = true;

    // 定义验证规则
    protected $validate=[
        'name'=>'require|max:10',
        'age'=>'require|integer|between:1,100',
        'email'=>'email',
    ];
}
ログイン後にコピー

この例では、3 つの検証ルールを定義します: nameRequired、最大長は 10、ageRequired、整数である必要があります。値は 1 ~ 100 で、email は電子メール形式である必要があります。これらのルールは、モデル データを操作するときに自動的に検証されます。

  1. 自動検証機能を使用する

データベース操作にモデルを使用する場合は、対応するメソッドを呼び出すだけです (例:

// 添加数据
$data = [
    'name' => '张三',
    'age'  => '18',
    'email'=> 'zhangsan@test.com',
];
$model = new Test;
$result = $model->save($data);
if ($result) {
    echo '数据添加成功';
} else {
    echo '数据添加失败';
}

// 更新数据
$data = [
    'id'   => 1,
    'name' => '李四',
    'age'  => '20',
    'email'=> 'lisi@test.com',
];
$model = new Test;
$result = $model->save($data, ['id' => 1]);
if ($result) {
    echo '数据更新成功';
} else {
    echo '数据更新失败';
}

// 删除数据
$model = new Test;
$result = $model->destroy(1);
if ($result) {
    echo '数据删除成功';
} else {
    echo '数据删除失败';
}

// 查询数据
$model = new Test;
$result = $model->where('id', 1)->find();
if ($result) {
    echo '数据查询成功';
} else {
    echo '数据查询失败';
}
ログイン後にコピー

)。 「これらのメソッドを使用する場合、ThinkPHP6 はモデルで定義された検証ルールに基づいて自動的に検証します。」検証が失敗した場合は、例外がスローされ、失敗の理由が返されます。

  1. カスタム検証メッセージ

自動検証では、静的属性 message をモデル クラスに追加することで、検証が失敗したときの検証メッセージを定義できます。 。 エラーメッセージ。例:

<?php
namespace appmodel;
use thinkModel;
class Test extends Model
{
    // 指定表名
    protected $table = 'test';
    // 指定主键名
    protected $pk = 'id';
    // 自动时间戳
    protected $autoWriteTimestamp = true;

    // 定义验证规则
    protected $validate=[
        'name'=>'require|max:10',
        'age'=>'require|integer|between:1,100',
        'email'=>'email',
    ];

    // 定义验证失败消息
    protected $message = [
        'name.require'  => '姓名不能为空',
        'name.max'      => '姓名长度不能超过10个字符',
        'age.require'   => '年龄不能为空',
        'age.integer'   => '年龄必须为整数',
        'age.between'   => '年龄取值必须在1到100之间',
        'email.email'   => ' email格式不正确 ',
    ];
}
ログイン後にコピー

この例では、検証失敗のエラー メッセージを定義します。データ検証の失敗が検出された場合、ThinkPHP6 は定義されたメッセージに従って、対応するエラー情報を自動的に返します。

まとめ

ThinkPHP6の自動検証機能を利用することで、データベース動作のORM自動検証を迅速に実装することができ、開発効率の向上とエラーの削減を実現します。モデル クラスでデータ検証ルールとメッセージ プロンプトを定義すると、開発と保守がより便利になります。この記事が皆様のお役に立ち、皆様が ThinkPHP6 をより快適に使用できるようになれば幸いです。

以上がThinkPHP6 を使用して ORM を実装し、データベース操作を自動的に検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート