CakePHP: создать новый контроллер - PullRequest
1 голос
/ 17 февраля 2012

Я использую CakePHP 2.0.5 (но это не обязательно вопрос для CakePHP). У меня есть купон и модель пользователя. Каждый раз, когда пользователь печатает купон (обработано: Контроллер купонов):

class CouponsController extends AppController {
    public function printcoupon($id = null) {
        // code
    }
}

Я хочу сохранить информацию в таблицу «coupons_printed» (id / coupon_id / user_id / созданный). Должен ли я создать новую модель для этого или я должен просто создать функцию внутри модели Coupon, аналогичную (и вызывать ее в контроллере при каждом просмотре этой страницы)?

class Coupon extends AppModel {
    function insertIntoPrinted($id) { 
        $this->query("UPDATE coupons_printed SET .....");  
    } 

}

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

Что бы вы ни делали, необработанный SQL-запрос - это , а не .Всегда используйте методы CakePHP, если это вообще возможно (и почти всегда это возможно возможно).

Вы должны поместить функцию insertIntoPrinted() в модель CouponsPrinted (хотя, как примечание, PrintedCouponбыло бы более естественным способом назвать модель ...) Затем можно добавить отношение HasMany к модели купонов ($hasMany = array( 'CouponsPrinted' )) и вызвать функцию в CouponsController:

public function printcoupon($id = null) {
    $this->Coupon->CouponsPrinted->insertIntoPrinted( $id );
}
0 голосов
/ 17 февраля 2012

Модель CakePHP имеет ассоциацию вызова вещи.
В вашем случае Coupon имеет ассоциацию hasMany с coupons_printed.
Вы можете создать новую модель или выполнить запрос, используя ассоциацию в модели Coupon, сгенерированные запросы будутбыть таким же, я считаю.

Ваш CouponsController уже зависит от модели купонов, поэтому лучшим решением будет не создание другой модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...