2015-07-16 01:35:19 4891次浏览 2条回答 0 悬赏 100 金钱

大家好,有表user,字段:name。
直接使用gii生成model,user->name.可以进行设置,然后user->save();等等。
请问如果这个时候修改了数据库的字段名称,是否可以 不改变属性名name的情况下,还能继续使用这个model的AR操作呢?
我尝试了。

public function attributes()
{
    return [
        'cn_name'=>'name'
    ]
}

设置后,程序是没有错的,但是当然save的操作时,就会提示表user中不包含name的列(确实不存在,因为已经修改为cn_name了)。
不知道有什么办法可以解决?

实在不想整个项目全部去修改namne 为 新的 cn_name?

最佳答案

  • ╃巡洋艦㊣ 发布于 2015-07-16 07:04 举报

    你上面的修改不是对字段映射的修改,而且修改的字段的标签,这个标签一般用在表单中。
    可以这样试一下:
    在model中增加成员变量,public $cn_name;
    在beforeSave时,传递成员变量的值 $this->name = $this->cn_name;

    1 条回复
    回复于 2015-07-16 13:15 回复

    不过舰长.

    public function attributes(){
    }
    public function attributeLabels(){
    }
    

    确实是2个方法。我使用attributes 起到了属性别名的作用,但是还是实现不了我说的想法。
    目前看来只有beforeSave

您需要登录后才可以回答。登录 | 立即注册
xjdata
CEO

xjdata

注册时间:2011-12-07
最后登录:2021-07-09
在线时长:112小时28分
  • 粉丝23
  • 金钱14169
  • 威望75
  • 积分16039

热门问题