【问题标题】:YII how to get relationsYII如何获得关系
【发布时间】:2013-08-05 07:38:18
【问题描述】:

我有两张桌子 Center 和 Class。这个 Centerclass 之间的关系。 类中的关系,

'centers' => array(self::MANY_MANY, 'Center', 'centerclass(cl_id, cent_id)'),

和中心的关系,

'classes' => array(self::MANY_MANY, 'Class', 'centerclass(cent_id, cl_id)'),

现在,如果我有中心 id,如何获取与该中心关联的所有类。

请给我这个 Yii 的标准。

谢谢。

【问题讨论】:

    标签: yii criteria


    【解决方案1】:

    您可以使用 'with()' 方法在查询上应用 JOIN 关系:

    $center = Center::model()->with('classes')->findByPk($centerId);
    

    并通过这样的 foreach 获取类:

    foreach($center->classes as $class){
         echo $classes->cl_id; // Attribute that you like to show.
    }
    

    已编辑:

    在 CGridView 中使用:

    控制器:

    $dataProvider =  new CArrayDataProvider('Class');
    $dataProvider->setData($center->classes);
    

    在渲染中添加 $dataProvider 以将其发送到视图。

    更多信息在:http://www.yiiframework.com/doc/api/1.1/CDataProvider

    或直接在视图中:

    $this->widget('zii.widgets.CListView', array(
            'dataProvider'=>new CActiveDataProvider('Class', array(
                                                              'data'=>$center->classes)
             ),
        ....
    

    更多信息在: http://www.yiiframework.com/doc/api/1.1/CBaseListView

    【讨论】:

    • 嘿,谢谢。但我需要将所有返回的类分配到一个类模型列表中。如何将所有返回类添加到模型类数组中。我是新手。没关系。
    • $center->classes 是一个类模型列表。您可以创建一个具有“类”的“X”特定属性的数组吗?
    • 不错,考虑到它是从另一个答案复制而来的。而且它不应该是echo $classes->cl_id;,而是echo $class->cl_id;,关于你在评论中的问题,你可以直接将$center->classes分配给to an array of model class
    • @LazKarimov 很抱歉,但我没有复制你的答案。我比你晚了 7 分钟,这是我写它的时间。
    • 当我直接将 '$center->classes' 传递到要渲染的视图中时,出现以下错误。致命错误:在 C:\wamp\www\yii\framework\zii\widgets\CBaseListView.php 的第 107 行调用非对象的成员函数 getData()
    【解决方案2】:
    $center = Center::model()->with('classes')->findByPk($centerId);
    foreach($center->classes as $class){
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 2015-12-01
      • 2023-04-11
      • 2014-07-22
      • 2020-01-15
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      相关资源
      最近更新 更多