我的数据库中有一个名为商家的表,在该表中我有一个名为 Mercer_code 的字段,我想为我的字段生成一个 8 代码,这样前两个字符包含来自各州的 state_name 的前两个字母表和接下来的两个字符包含我的 city_name 来自城市表的前两个字母,最后四个字符应包含从 ooo1 开始的数字。在添加商家时,我希望此代码自动添加,并保存在我的数据库中我是 cakehp 的初学者,所以请简要回答我,如果我找到解决方案将不胜感激
问问题
34 次
1 回答
2
Merchant 模型可能与 City 模型(如 belongsTo)相关联,而 City 模型又与 State 模型(belongsTo 也是)相关联。您可以为 Merchant 模型创建 afterSave 回调并检查参数 $created。如果是真的,只需从相关模型中获取 2 条记录并编写您的商家代码。像这样:(考虑到您对 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);
}
}
}
于 2012-10-16T18:00:50.313 回答