我正在使用CakePHP 2.0.5(但这不一定是cakephp特定的问题)。我有优惠券和用户模型。每次用户打印优惠券(由优惠券控制器执行):
class CouponsController extends AppController {
public function printcoupon($id = null) {
// code
}
}
我想将信息保存到“coupons_printed”表(id / coupon_id / user_id / created)。我应该为此创建一个新模型,还是应该只在Coupon模型中创建一个类似于(并在每次查看该页面时在控制器中调用它)的函数?:
class Coupon extends AppModel {
function insertIntoPrinted($id) {
$this->query("UPDATE coupons_printed SET .....");
}
}
答案 0 :(得分:2)
无论你做什么,原始的SQL查询都不是最好的方法。如果可能的话,总是使用CakePHP方法(并且几乎总是 可能)。
您应该将insertIntoPrinted()
功能放在CouponsPrinted模型中(尽管如此,作为旁注,PrintedCoupon将是一种更自然的方式来命名模型......)然后,您可以向优惠券添加HasMany关系model($hasMany = array( 'CouponsPrinted' )
)并调用CouponsController中的函数:
public function printcoupon($id = null) {
$this->Coupon->CouponsPrinted->insertIntoPrinted( $id );
}
答案 1 :(得分:0)
CakePHP的模型有一个事物调用关联 在您的情况下,优惠券与coupons_printed有一个hasMany协会 您可以使用优惠券模型中的关联创建新模型或查询,生成的查询将是相同的,我相信。
您的CouponsController已经依赖于优惠券模型,因此不创建其他模型是更好的解决方案。