dongtaigan1594 2013-05-23 17:33
浏览 37
已采纳

与HasMany的Yii Relation数据问题

Currently we have two tables. Locations and Addresses

Locations are a 1 to many relation to addresses on addresses.location_id.

We are trying to output all addresses related to a specific location in the cgridview:

admin.php

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'locations-grid',
    'dataProvider'=>$location->search(),
    'filter'=>$location,
    'columns'=>array(
        'id',
        'name',
        array(
            'name' => 'address',
            'value' => 'implode("<br>",CHtml::listData($data->addresses(),"id","address"))',
            'filter' => CHtml::activeTextField($location, 'address'),
            'type' => 'html',
        ),/**/  
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

model (locations.php)

public function search()
    {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.
        $criteria=new CDbCriteria;
        $criteria->together = true;
        $criteria->with = array('addresses');
        $criteria->compare('id',$this->id);
        $criteria->compare('name',$this->name,true);
        $criteria->compare('addresses.address',$this->address,true);

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

Is there a better way of going about getting the address data rather then imploding the $data->addresses function?

  • 写回答

1条回答 默认 最新

  • dousi4900 2013-05-24 06:48
    关注

    You can add a getter method to your Locations model.

    public function getAddressNames($separator='<br>')
    {
        $names = array();
        foreach($this->adresses as $address) {
            $names[] = $address->address;
        }
        return implode($separator, $names);
    }
    

    Then you can use addressNames like a regular attribute in your gridview.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题