Yii框架多表查詢(一對一與多對一)

在網上查過了不少yii框架多表查詢的問題,但總沒有適合本身的,本身建了幾張表過來分析,把操做寫出來分享Yii框架多表查詢(一對一與多對一)給你們php

查一對一或多對一(常使用到的就是文章和文章分類關係)sql

在yii數據庫模型中好比有一個Post.php文件數據庫

代碼以下:框架

class Post extends CActiveRecord{
    /*
     * 返回當前模型對象的靜態方法
     * 重寫父類CActiveRecord對應的方法
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }
    
    /*
     * 返回當前數據表的名字
     *  重寫父類CActiveRecord對應的方法
     */
    public function tableName() {
        return '{{post}}';
    }
    //關聯查詢
    public function relations()
    {
        return array(
yii

        //Post與User的關係是BELONGS_TO(多對一)關係,這裏的author_id是User中的author_idpost

        //'select'=>'id,username'查出來的字段ui

            'author'=>array(self::BELONGS_TO, 'User', 'author_id','select'=>'id,username'),
        );
    }
}
spa

須要弄清楚的幾點:
(1),VarName是指一個對像;
(2),RelationType。一共有4種,分別爲self::HAS_MANY, self::BELONGS_TO, self::MANY_MANY, self::HAS_ONE。
(3),ClassName。即關聯的另外一個../model/類名.php。
(4),ForeignKey。誰是誰的外鍵?
(5),附加條件

對象

要是在操做器中使用,那麼咱們得這麼寫:排序

    public function actionIndex(){
        $post=post::model();
        $criteria = new CDbCriteria();

        //加一個條件就是author_id=2的

        //$criteria->condition ="author_id=2";

        //這個是按什麼條件排序

        //$criteria->order = 't.author_id ASC';

        $criteria->with = array ( 'author' );
        $result =$post->findAll( $criteria );
        print_r($result);

    }


以上的例子使用原生態的sql語句是這樣麼寫的:

SELECT * FROM wn_post as p left join wn_user as u ON u.id=p.author_id

相關文章
相關標籤/搜索