CakePHP:创建一个新的控制器

时间:2012-02-17 17:21:39

标签: cakephp

我正在使用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 .....");  
    } 

}

2 个答案:

答案 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已经依赖于优惠券模型,因此不创建其他模型是更好的解决方案。