【问题标题】:Multiple table query using CDbCriteria on Yii在 Yii 中使用 CDbCriteria 进行多表查询
【发布时间】:2014-02-14 05:52:23
【问题描述】:

我想在我的模型上使用 CDbCriteriasearch 函数

上实现这个查询

这是查询

select t.*
from transaksi t, stock_cabang sc, cabang c
where t.id_stock_cabang = sc.id
and sc.id_cabang = c.id and c.id =1;

这是我的功能

public function search() {
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria = new CDbCriteria;

    $criteria->compare('id', $this->id);
    $criteria->compare('jumlah_masuk', $this->jumlah_masuk);
    $criteria->compare('id_user', $this->id_user);
    $criteria->compare('id_stock_cabang', $this->id_stock_cabang);
    $criteria->compare('waktu', $this->waktu, true);

    return new CActiveDataProvider($this, array(
        'criteria' => $criteria,
    ));
}

请帮帮我...

【问题讨论】:

    标签: php sql yii frameworks


    【解决方案1】:

    这是一个使用 3 个表的示例代码。

        $criteria=new CDbCriteria;
            $criteria->with = array(
                'Table1' => array('alias'=> 't1', 'together' => true, ),
                'Table2' => array('alias'=> 't2', 'together' => true, ),
            );
        $criteria->together = true;
        $UserProduct = UserProduct::model()->find($criteria); 
    

    这里alias 是可选的。

    可以添加更多选项,例如

    #   GET THE FRIENDS OF CURRECT PROFILE 
        $criteria=new CDbCriteria;
        $criteria->with = array(
            'Relation1' => array('alias'=> 'r1', 'together' => true, 
                'select' => array('r1.user_id', 'r1.relator_id', 'relation',) ),
            'Relation2' => array('alias'=> 'r2', 'together' => true, 
                'select' => array('r2.relator_id', 'r2.user_id', 'relation',) ),
        );
        $criteria->addCondition('( r1.user_id = "'.$fId.'" OR r2.relator_id = "'.$fId.'" ) AND t.id = "'.$fId.'" AND 
        ( r1.relation != "2" AND r2.relation != "2" ) ');
        $criteria->together = true;
        $userFriends = User::model()->find($criteria); 
    

    【讨论】:

    • 嘿,现在我明白together 属性的作用了。
    【解决方案2】:

    首先,我建议您使用模型之间的关系,例如为每个表创建一个模型,然后使用 BELONGS_TO 关系,这可以解决您的问题,

    另一种解决方案可能是使用JOIN parameter 并加入其他表, 您可以在这里找到一些类似的解决方案:Yii: working with multiple tables

    祝你好运!

    如果我有语言错误,请见谅

    【讨论】:

    • 在与我相似的问题中只使用 2 个表,但我使用 3 个表...我的模型也有关系
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多