2012-10-30 3 views
1

첫 YII 웹 사이트를 개발 중입니다. 나는 YII 데이터베이스에 대해 몇 가지 의문을 가지고 있습니다.YII의 데이터베이스 승인

yii에서 데이터베이스를 쿼리하는 데는 세 가지 방법이 있습니다.

  • 데이터베이스 액세스 개체
  • 쿼리 빌더
  • 액티브 레코드 안전하고 가장 선호하는 방법입니다 이러한 세 가지 방법 중

  1. ?
  2. 원하는 방법을 수행하기 위해 사용자 지정 쿼리를 사용하는 경우?
  3. 쿼리 빌더 쿼리의 경우에 우리는 명시 적으로

    $user = Yii::app()->db->createCommand() 
         ->select('id, username, profile') 
         ->from('tbl_user') // explicitly choosing the table 
         ->join('tbl_profile p', 'u.id=p.user_id') 
         ->where('id=:id', array(':id'=>$id)) 
         ->queryRow(); 
    

    그래서 쿼리 빌더 쿼리를 작성해야 같은 테이블을 선택 하는가? 해당 테이블 모델에 쓰기 만하면 어떤 이점이 있습니까?

  4. DAO 또는 쿼리 빌더를 사용하면 어떤 모델이 내 모델을 확장해야합니까?

  5. DAO 방법 또는 쿼리 빌더 방법을 따를 경우 사용자 입력의 유효성을 검사하는 방법은 무엇입니까?

답변

6
  1. 는 따라 다릅니다. 안전하게 사용하는 방법을 알고 있으면 모두 안전합니다.

  2. DAO. 그것은 제 의견입니다.

  3. 모델에서.

  4. Yii에는 두 가지 기본 모델 클래스가 있습니다. CFormModelCModel. 쿼리의 경우 CModel과 관련하여 클래스를 확장합니다.

끝에 단지 메모. DAO는 그 중에서도 가장 빠릅니다. 활성 레코드가 가장 느립니다. 반면, 활성 레코드가 더 편리합니다. 당신은 균형이 무엇인지 결정해야하는 사람입니다.

+0

모델에서 쿼리 작성기 쿼리를 작성해야하는 이유 (테이블 이름이 자체 쿼리에서 지정됨)? –

+0

어쨌든 쿼리 빌더를 사용하지 않습니다. 그러나 문제는 모델에 없다면 어디에서 작성하고 싶습니까? – itachi

+0

컨트롤러에 쓰지 않는 이유는 무엇입니까? –

0

모든 요구 사항에 CActiveRecord을 사용할 수 있습니다.