YII中的数据库方法

I am developing my first YII website. I have a couple of doubts about YII database.

There are three methods to query database in yii.

  • Database Access Objects
  • Query Builder
  • Active Record

  1. Out of these three methods which is the secure and most preferred method?
  2. If I have custom queries to perform which method should I prefer?
  3. In case of Query Builder queries we explicitly choose table like

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

    so where should I write query builder queries? Is there any advantage if I write them in corresponding table model?

  4. If I use DAO or query builder what class should extend my model?

  5. How to validate user inputs if I follow DAO method or query builder method?

  1. Depends. All are equally secured if you know how to use them securely.

  2. DAO. That's my opinion though.

  3. In the models.

  4. There are two main model classes in Yii. CFormModel and CModel. For queries, extend the class with respect to CModel.

Just a note at the end. DAO is the fastest among them. Active record is slowest. On the other hand, active record is more convenient. You are the one who needs to decide what should be the balance.

You can use CActiveRecord for all your requirements.