从cakephp中的数据库值生成一个字符串

时间:2012-06-01 12:21:26

标签: cakephp-1.3

我的数据库中有一个名为商家的表,在该表中我有一个名为merchant_code的字段,我想为我的字段生成一个8代码,前两个字符包含我的前两个字母来自states表的state_name和接下来的两个字符包含来自cities表的city_name中的前两个字母,后四个字符应包含从ooo1开始的数字。 在添加商家时,我希望此代码自动添加,并保存在我的数据库中 我是cakehp的初学者,所以请简单回答一下,如果我找到解决方案会很感激

1 个答案:

答案 0 :(得分:2)

商家模型可能与City模型(作为belongsTo)相关联,而City模型又与State模型相关联(belongsTo也是如此)。您可以为Merchant模型创建一个afterSave回调,并检查参数$ created。如果是真的,只需从关联模型中获取2条记录并组成您的merchant_code。这样的事情:(考虑到你对City模型使用Containable行为):

public function afterSave($created) {
    parent::afterSave($created);
    if ($created) {
        $this->City->contain('State');
        $names = $this->City->find('first', array(
            'conditions' => array(
                'City.id' => $this->data['Merchant']['city_id']
            ),
            'fields' => array(
                'City.city_name',
                'State.state_name',
            )
        ));

        if (!empty($names)) {
            $merchant_code = substr($names['State']['state_name'], 0, 2)
                . substr($names['City']['city_name'], 0, 2)
                . sprintf('%1$04d', $this->getLastInsertID());
            $this->saveField('merchant_code', $merchant_code);
        }
    }
}