Yii2의 ActiveRecord 및 ActiveQuery 소개

2726 단어 yii2ar
활동 레코드
활동 기록은 데이터베이스에 있는 특정한 표의 특정한 기록과 관련된 대상이다. 우리는 이 대상의CURD 방법을 호출하여 기록을 조작한다. Yii2의 활동 기록은 사실 매우 표준적이다. AR 클래스는 모델 모델이고 대응 데이터 표이며 AR 클래스의 실례는 활동 기록이고 표의 특정한 기록에 대응한다.
Yii2에서 AR로 활동하는 인스턴스는 데이터 테이블의 레코드에 해당합니다.
AR의 실례 자체는 데이터 테이블의 기록으로서 테이블 단계에 대한 조작을 맡지 말아야 하기 때문에 Yii2는 이 임무를 AR와 하위 클래스에 부여했다.우리는 관련 클래스 방법(즉 정적 방법)을 호출하여 표를 검색하여 우리가 원하는 활동 기록을 얻을 수 있다. 물론 이러한 정적 방법도 이 모델의 실례에 사용될 수 있다(정적 방법의 특성)
ActiveRecord에 대한 ORM 작업 기준:
1. AR 클래스를 통해 데이터베이스에 접근하고 해당하는 데이터 테이블을 검색하여 조건에 맞는 활동 기록을 얻는다.
2. 활동 기록에 대한 CURD 작업
Yii2의 AR는 AQ를 호출하여 연결된 표를 검색하는 작업입니다. 아래의 AR 방법은 AQ 대상을 되돌려줍니다
User::find() // AR AQ 
User::findBySql($sql) // AQ   $sql = "select * from yii_user where id = 1"

관련 조회를 진행할 때 이미 확정된 활동 기록을 통해 관련 표를 조건 검색한다
// AQ $user->hasOne(Order::className(), ['uid' => 'id'])  
$user->hasMany()
// AQ $user->hasOne(Order::className(), ['uid' => 'id'])  
$user->hasOne()

AQ는 호출 방법을 통해 데이터 표를 검색할 수 있다
AQ->where()->groupBy()->having()->orderBy()->offset()->limit()->all()/One();

마지막으로 all 또는 원 방법을 통해 조건에 부합되는 활동 기록(모델의 실례)을 되돌려줍니다.asArray()도 그룹 집합을 되돌려줍니다
<?php
namespace app\models;

use yii\db\ActiveRecord;

class User extends ActiveRecord {
    
    public static function tableName() {
        // db  tablePrefix => 'tabPre'    
        retrun "{{%_tabName}}";
    }
    
    public function getUserOrders() {
        return $this->hasMany(Cart::className(), ['uid' => 'id'])->asArray()->all();
    }
}
?>

<?php
namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\User;

class IndexController extends Controller {
    
    public function actionOrders($id) {
        $user = User::findOne($id); //  AR   yii_user  
        // $user = (new User())->findOne($id); //       
        $orders = $user->getUserOrders(); // 
    }
}
?>

이외에도 Yii는 다음과 같은 방법으로 활동 기록을 획득할 수 있다
User::findOne(['id' => 1]);
User::findAll(['status' => 1]);

TP의 AR은 그다지 표준적이지 않다. TP는 AR 장절에서도 말했듯이 TP의 AR 유형은 다음과 같다.
Database -> ModelObj-> ModelObj->find() -> AR -> AR CURD
음, 엄밀히 말하면 TP에는ActiveRecord류가 없고 모든 테이블 작업은 모델 유형을 바탕으로 한다. 모델의 실례는find() 방법을 사용한 후에 AR 대상이 된다.그리고 이 제품은 다기능 AR 대상인데...
$user = new Home\Model\User(); // D('user')..  Model  .... 
$user->find(1); //  Model  AR  find    
$userInfo = $user->find(1); //    ....
$user->username = "sallency";
$user->save();

어지러워 보일 수도 있으니까 기억하면 돼...

좋은 웹페이지 즐겨찾기