首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cakephp habtm与输入的关系,而不是选择框?

cakephp habtm与输入的关系,而不是选择框?
EN

Stack Overflow用户
提问于 2010-01-28 08:14:09
回答 3查看 595关注 0票数 0

我正在使用cakephp创建一个具有典型HABTM关系的表单。假设我正在开发一个带有优惠券代码的订单。从逻辑的角度来看,我需要接受优惠券代码的文本输入,因此传入的数据将不是正确的主键,而是一个不同的字段。

然后,我需要验证该数据,检索正确的主键id,然后使用该coupon_id和order_id更新orders_coupons表。

当使用选择框时,值总是正确的coupon_id,但是我应该把处理这个问题的逻辑放在哪里呢?我应该使用beforeSave修改数据吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-28 08:19:12

你的问题不是很清楚b/c听起来你们既可以通过选择框指定优惠券,也可以在自由格式的文本框中指定优惠券。

我倾向于向模型中添加一个新方法,该方法将使用“人类可读的键”更新记录。因此,该函数将首先从数据库中读取coupon_id,然后进行更新。

票数 0
EN

Stack Overflow用户

发布于 2010-01-28 17:04:26

如果我没弄错的话,这跟加标签差不多吗?!(有一个用于输入habtm项的文本输入框,字符串将不带ids提交给控制器)。

如果是这样的话,我会建议拆分处理。将数据提交给控制器,然后将优惠券字符串传递给优惠券模型中的适当函数,该函数获取优惠券in (保存新项目),并将它们返回给控制器以保存完整的habtm数据。

票数 0
EN

Stack Overflow用户

发布于 2010-01-28 18:06:20

就像你说的,你只需要查一下优惠券id...

代码语言:javascript
运行
复制
// assuming $data looks like:
// array('Order' => array(...), 'Coupon' => array('code' => ...))

$coupon_id = $this->Order->Coupon->field('id', array('code' => $data['Coupon']['code']));

if (!$coupon_id) {
    // user put in a non-existing coupon code, punish him!
} else {
    $data['Order']['coupon_id'] = $coupon_id;
    $this->Order->save($data);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2151385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档