>  기사  >  PHP 프레임워크  >  yii2에서 dao와 ar의 차이점

yii2에서 dao와 ar의 차이점

(*-*)浩
(*-*)浩원래의
2019-11-05 13:20:412470검색

AR(Active Record)은 널리 사용되는 ORM(객체 관계형 매핑) 기술입니다. 각 AR 클래스는 데이터 테이블(또는 뷰)을 나타내고, 데이터 테이블(또는 뷰)의 열은 클래스의 속성으로 AR 클래스에 반영되며, AR 인스턴스는 테이블의 행을 나타냅니다. 일반적인 CRUD 작업은 AR 메서드로 구현됩니다.

yii2에서 dao와 ar의 차이점

따라서 보다 객체 지향적인 방식으로 데이터에 액세스할 수 있습니다. $c = new CDbCriteria();는 ActiveRecord를 보다 유연하게 작성하는 방법이며, 아래의 두 가지 예를 살펴보겠습니다. (추천 학습: yii 튜토리얼)

참고:AR은 모든 데이터베이스 관련 작업을 해결하기 위한 것이 아닙니다. 최고의 애플리케이션은 데이터 테이블을 PHP 구조로 모델링하고 복잡한 SQL 문을 포함하지 않는 쿼리를 실행하는 것입니다. 복잡한 쿼리 시나리오의 경우 Yii DAO를 사용해야 합니다.

$criteria = new CDbCriteria;       
//函数方式 
$criteria->addCondition("id=1"); //查询条件,即where id = 1   
$criteria->addInCondition('id', array(1,2,3,4,5)); //代表where id IN (1,23,,4,5,);   
$criteria->addNotInCondition('id', array(1,2,3,4,5));//与上面正好相法,是NOT IN   
$criteria->addCondition('id=1','OR');//这是OR条件,多个条件的时候,该条件是OR而非AND   
$criteria->addSearchCondition('name', '分类');//搜索条件,其实代表了。。where name like '%分类%'   
$criteria->addBetweenCondition('id', 1, 4);//between 1 and 4    
     
$criteria->compare('id', 1);    //这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition,   
                                //即如果第二个参数是数组就会调用addInCondition   
$criteria->addCondition("id = :id");   
$criteria->params[':id']=1;   
      
//属性方式   
$criteria->select = 'id,parentid,name'; //代表了要查询的字段,默认select='*';   
$criteria->join = 'xxx'; //连接表   
$criteria->with = 'xxx'; //调用relations    
$criteria->limit = 10;    //取1条数据,如果小于0,则不作处理   
$criteria->offset = 1;   //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10   
$criteria->order = 'xxx DESC,XXX ASC' ;//排序条件   
$criteria->group = 'group 条件';   
$criteria->having = 'having 条件 ';   
$criteria->distinct = FALSE; //是否唯一查询

Yii 데이터 액세스 개체(DAO)는 PHP 데이터 개체(PDO) 확장을 기반으로 구축되어 단일 통합 인터페이스에서 다양한 데이터베이스 관리 시스템(DBMS)에 액세스할 수 있습니다. Yii의 DAO를 사용하여 개발된 애플리케이션은 데이터 액세스 코드를 수정하지 않고도 다양한 데이터베이스 관리 시스템을 사용하도록 쉽게 전환할 수 있습니다. 다음은 DAO의 예입니다.

예제 코드

/**
     * 关于DAO的例子
     * 获取所有用户名
     */
    public function getUsernames ()
    {
        $sqlStatement = ' SELECT `username` FROM `testdrive`.`tbl_user` ';
        $this->command = $this->connection->createCommand($sqlStatement);
        return $this->command->queryAll();
    }
    /**
     *
     * 添加一个用户
     */
    public function addUser ()
    {
        $sqlStatement = " INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES ('test', 'test', 'test@test.com') ";
        $this->command = $this->connection->createCommand($sqlStatement);
        return $this->command->execute();
    }

몇 가지 주의할 점이 있습니다.

1 DAO 방법의 결과 차이는 다음과 같습니다. DAO 방법의 각 요소는 여전히 배열. CDbCriteria 메서드를 사용하면 배열의 요소가 개체입니다.

2. 이 기능이 매우 강력하더라도 아직 충족할 수 없는 몇 가지 요구 사항이 있습니다. 이때에도 여전히 SQL 문이 필요합니다. 예를 들어 ****에서 avg(num) 금액을 선택합니다.

3. 실행 후 결과를 인쇄하면 Yii가 이를 구현하는 방법에 대해 자세히 알아볼 수 있습니다

위 내용은 yii2에서 dao와 ar의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.