yii2 のモデルと activeRecord の違いは何ですか

王林
リリース: 2020-11-20 15:57:37
転載
10844 人が閲覧しました

yii2 のモデルと activeRecord の違いは何ですか

Yii2 のモデルと activeRecord (略して AR) の違いは次のように分析されます:

(関連する推奨事項: yii)

1. モデル

モデルは mvc の一部であり、ビジネス データ、ルール、ロジックを表すオブジェクトです。 Model クラスは、Active Record などのより高度なモデルの基本クラスでもあります。
デフォルトでは、モデルは yii\base\Model から直接継承します。

namespace app\models;

use yii\base\Model;

class LoginForm extends Model
{
    public $username;
    public $password;

    public function rules() {
        // 这里写你的验证规则
        [['username', 'password'], 'required'],
        // password is validated by validatePassword()
        ['password', 'checkPassword'], // 验证密码
    }

    // 这里写你验证密码的逻辑
    public function checkPassword($attribute,$params) 
    {
        // ......
    }

    // 这里写登录的逻辑
    public function login()
    {
        // ......
    }
}
ログイン後にコピー

コントローラー コードを見てみましょう:

namespace app\controllers;
use Yii;
use yii\web\Controller;

class SiteController extends Controller
{
    // ...
    public function actionLogin()
    {
        $model = new LoginForm();
        // 根据用户在登录表单的输入来做判断
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        }
    }
}
ログイン後にコピー

2. ActiveRecord クラス

Active Record (以下、AR) は、次のデータにアクセスするためのオブジェクト指向インターフェイスを提供します。データベース。 activeRecord クラスはデータ テーブルに関連付けられており、各 activeRecord オブジェクトはテーブル内の行に対応し、オブジェクトの属性 (つまり、AR の属性 Attribute) はデータ行の対応する列にマップされます。アクティビティ レコード (AR オブジェクト) はデータ テーブルの行に対応し、AR オブジェクトの属性は行の対応する列をマップします。

3. Model と ActiveRecord クラスの関係

yii\db\ActiveRecord.php

class ActiveRecord extends BaseActiveRecord
{
...
}
ログイン後にコピー

で確認できますyii\db\BaseActiveRecord で確認できます.php から

abstract BaseActiveRecord extends Model implements ActiveRecordInterface
{
...
}
ログイン後にコピー

以上がyii2 のモデルと activeRecord の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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