【问题标题】:Create this query创建此查询
【发布时间】:2015-01-22 05:06:18
【问题描述】:

将 createCommand 隐藏为 CDbCriteria。

如何使用 CDbCriteria yii 创建这个查询?

SELECT SUM(f.mablagh) as kol,k.code,k.name,m.name AS mName,m.code AS mCode
FROM T1 AS f
LEFT JOIN T2 AS k ON k.code=f.kCode
LEFT JOIN T3 As m ON m.code=k.main
GROUP BY k.main

T1 型号:

public function relations()
{
    return array(
        'kCode0' => array(self::BELONGS_TO, 'T2', 'kCode'),
    );
}

T2 型号:

return array(
       'main' => array(self::BELONGS_TO, 'T3', 'mymain'),
    );

换句话说,我想转换这段代码:

$result = Yii::app()->db->createCommand()
                ->select('SUM(f.mablagh) as kol,k.code,k.name,m.name AS mName,m.code AS mCode')
                ->from('T1 AS f')
                ->join('T2 AS k' ,'k.code=f.kCode')
                ->join('T3 AS m' ,'m.code=k.main')
                ->group('k.main')
                ->queryAll();

收件人:

$criteria   = new CDbCriteria;
.
.
.
.
$result = T1::model()->findAll($criteria);

【问题讨论】:

    标签: php yii


    【解决方案1】:

    如果你想使用条件,那么你可以在没有任何其他模型关系的情况下使用它:

    $criteria   = new CDbCriteria;
    $criteria->select = "SUM(t.mablagh) as kol,k.code,k.name,m.name AS mName,m.code AS mCode";
    $criteria->join = "LEFT JOIN T2 AS k ON k.code=t.kCode LEFT JOIN T3 AS m ON m.code=k.main";
    $criteria->group = "k.main";
    $result = T1::model()->findAll($criteria);
    

    【讨论】:

    • 谢谢,但 print_r($result) 数据 T2,T3 不存在!
    • 您需要将其更改为表名。或者 T2::model()->tableName() 如果你正在使用类。
    • 可以稍微解释一下
    • 那么,是 T2 和 T3 表吗?你有什么不明白的?
    猜你喜欢
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2018-02-01
    • 2013-07-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多