2016-05-06 17:45:25 2905次浏览 2条回答 0 悬赏 10 金钱

比如查询城市表,里面有数据 广东 、广州 、深圳 、湖南 、长沙。。。为了区分省和市,省的f_id = 0,而市的呢 就是对应省的 id, 这时候我用CRUD自动生成的VIEWS, 他查询出的所属省份是直接查询出数字来的,我需要换成对应的省份。不管是更改SQL语句也好,还是直接在查询出的结果里面循环再次查询也好,都可以,我只想知道,怎么或者说,在哪更改 列表页的查询语句,还有查询结果如果我要进行处理的话,结果是在哪里出来的?小白求教,很多问题。。。先问一个。感激不尽!谢谢!

最佳答案

  • allenqin 发布于 2016-05-12 11:41 举报

    index.php视图中定义展示字段修改一下

    
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],
    
                'id',
                'name',
                [
                    'label' => 'f_id',
                    'attribute' => 'parentName',
                ],
    
                ['class' => 'yii\grid\ActionColumn'],
            ],
    
    

    模型中添加一个新的方法:

    
        public function getParentName()
        {
            $item = $this->findOne(['id'=>$this->f_id]);
            if ($item) {
                return $item->name;
            } else {
                // 顶级类 或者 查询的父级不存在
                return '0';
            }
        }
    
    
    

    上面的代码可以实现展示效果,如果需要搜索,需要修改search模型。
    最好的解决方法,数据表多加一个 f_name 字段, 多加一个冗余字段,程序省去了很多繁琐的处理。

    1 条回复
    回复于 2016-05-16 09:55 回复

    也有道理,谢谢

  • 回答于 2016-05-06 21:43 举报

    你的描述我没有明白,能结合代码再描述清楚些吗

    2 条回复
    回复于 2016-05-09 13:39 回复
    $city = [
        [
            "id" => 1;
            "name" => "江西";
            "f_id" => 0;
        ]
        [
            "id" => 2;
            "name" => "南昌";
            "f_id" => 1;
        ]
        [
            "id" => 3;
            "name" => "广东";
            "f_id" => 0;
        ]
        [
            "id" => 4;
            "name" => "深圳";
            "f_id" => 3;
        ]
        [
            "id" => 5;
            "name" => "广州";
            "f_id" => 3;
        ]
    ];
    
    回复于 2016-05-09 13:41 回复

    举个例子的而已,f_id为0就是代表自己就是省的名字= =,f_id=1就代表他的省份名字是江西,我想知道在GII代码生成出来的search那里怎么写?

您需要登录后才可以回答。登录 | 立即注册
凉了又温丶
见习主管

凉了又温丶

注册时间:2016-05-04
最后登录:2017-11-28
在线时长:15小时38分
  • 粉丝1
  • 金钱165
  • 威望10
  • 积分415

热门问题