【问题标题】:STAT Relation on a related model's STAT relation, YiiSTAT Relation 关于相关模型的 STAT 关系,Yii
【发布时间】:2012-11-07 06:34:57
【问题描述】:

我在 Yii 中遇到了 STAT 关系的问题。我不确定我正在寻找的东西是否可能与原生 Yii 关系有关。我会尽力描述我的问题,如果有不清楚的地方,请询问任何具体细节。

我有三个表,因此有三个模型

| tablea         |
| tableb         |
| tablec         |


mysql> select * from tablea;
+----+--------+
| id | name   |
+----+--------+
|  1 | Item 1 |
|  2 | Item 2 |
+----+--------+
2 rows in set (0.00 sec)

mysql> select * from tableb;
+----+------+----------+
| id | Aid  | name     |
+----+------+----------+
|  1 |    1 | B Item 1 |
|  2 |    2 | B Item 2 |
|  3 |    1 | B Item 3 |
+----+------+----------+
3 rows in set (0.00 sec)

mysql> select * from tablec;
+----+------+----------+-------+
| id | Bid  | name     | value |
+----+------+----------+-------+
|  1 |    1 | C Item 1 |    10 |
|  2 |    2 | C Item 2 |    20 |
|  3 |    1 | C Item 3 |    15 |
|  4 |    2 | C Item 4 |     5 |
|  5 |    3 | C Item 5 |    12 |
+----+------+----------+-------+
5 rows in set (0.00 sec)

关系类似于 TableA HAS_MANY TableB 和 TableB HAS_MANY TableC。

我在 TableC 中有一个值字段。我能够从 TableB 中获得值总和的 STAT 关系。我想要的是 TableA 中所有 TableC 项目的总和。我需要在具有排序功能的 GridView 中使用它们。

关于如何实现这一点的任何想法?

谢谢

【问题讨论】:

    标签: php mysql yii relational-database


    【解决方案1】:

    您可以尝试将第三个表加入到 TableA 模型中的关系中,如下所示:

    public function relations()
    {
        return array(
            ...
            'TableCCount' => array(self::STAT, 'TableB', 'Aid', 'join'=>'INNER JOIN `tablec` `tc` ON `tc`.`Bid` = `t`.`id`'),
            ...
        );
    }
    

    未经测试,因此可能需要稍作修改。

    【讨论】:

    • 谢谢,这行得通。但这并没有完全使用关系,我们在连接中使用表名。这是实现此目的的原生 Yii 方式吗?我想知道为什么我们不能在 STAT 关系中使用“通过”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多