首頁 >php框架 >YII >yii2中model和activeRecord有什麼差別

yii2中model和activeRecord有什麼差別

王林
王林轉載
2020-11-20 15:57:3710918瀏覽

yii2中model和activeRecord有什麼差別

Yii2中的model與activeRecord(簡稱AR)的區別分析如下:

(相關推薦:yii

#一、Model

models 是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()
    {
        // ......
    }
}

我們看controller代碼:

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();
        }
    }
}

二、ActiveRecord類別

Active Record (活動記錄,以下簡稱AR)提供了一個面向對象的接口, 用以訪問資料庫中的資料。一個 activeRecord 類別關聯一張資料表, 每個 activeRecord 物件對應表中的一行,物件的屬性(即 AR 的特性Attribute)會對應到資料行的對應列。一筆活動記錄(AR物件)對應資料表的一行,AR物件的屬性則對應該行的對應列。

三、Model與ActiveRecord類別的關係

在yii\db\ActiveRecord.php中可以看到

class ActiveRecord extends BaseActiveRecord
{
...
}

在yii\db\BaseActiveRecord.php中可以看到

abstract BaseActiveRecord extends Model implements ActiveRecordInterface
{
...
}

以上是yii2中model和activeRecord有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除