Yii关系修改值

时间:2015-12-03 14:00:37

标签: php mysql yii

我有两个表,accountsbox。我需要将id的{​​{1}}字段与accounts的{​​{1}}字段相关联。这通常很简单,但字段uid有一个前缀。我无法改变数据库设计,不幸的是我坚持使用它。

例如,如果我的帐户boxuid,则框中的字段将为id。前缀始终相同,并始终用下划线分隔。

我目前有以下内容。

1

我无法操纵uid = prefix_1值,因为我不断收到错误:

'rl_account'=>array(self::BELONGS_TO, 'Accounts', '', 'foreignKey' => array(),'condition'=>'accounts.id = substring(column_name, instr(box.uid, "_") + 1)'),

或者我收到错误:

uid

如果我将Unknown column 'accounts.id' in 'where clause' 更改为Unknown column 'uid' in 'where clause' 。有谁知道如何使用关系实现这一点,还是我需要为此创建一个新方法?例如

accounts.id

如果有某种方式我可以改变id我相信我可以从那里做到。

2 个答案:

答案 0 :(得分:0)

你试过

吗?
'rl_account'=>array(self::BELONGS_TO, 'Accounts', '', 'on' => 'box.uid = CONCAT("prefix_", accounts.id)'),

答案 1 :(得分:0)

我有一个问题的解决方案,虽然不是一行,但尽可能接近。我不确定如果不使用我选择的方法或其他类似的方法,这是可能的,因为没有搜索产生答案,我也没有看到很多人试图这样做。

我的解决方案如下。在模型顶部创建一个公共变量:

public $noPrefix;

在find之后,我调用一个剥离前缀的方法,并根据需要给我留下id。

public function afterfind()
{
    $this->oldRecord=clone $this;
    $this->noPrefix= self::model()->stripUid($this->uid);
    parent::afterFind();
}

我现在拥有了我需要的id的模型的新属性。我现在可以用标准方式创建关系。

'rl_account'=>array(self::BELONGS_TO, 'Accounts', 'noPrefix'),