yii2中model和activeRecord有什麼區別

2020-11-20 18:01:27

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

(相關推薦:)

一、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有什麼區別的詳細內容,更多請關注TW511.COM其它相關文章!