CakePHP: ведение счета "View" - PullRequest
       2

CakePHP: ведение счета "View"

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

У меня есть контроллер "Купон".Функция index () захватывает несколько купонов в каждой категории и отображает их (т. Е.):

public function index() {
    $showPerPage = 4;

    $this->Coupon->recursive = 0;

    $this->set('restaurants', $this->Coupon->findAllBycategory_id('1', '', '', $showPerPage));
    $this->set('entertainment', $this->Coupon->findAllBycategory_id('2', '', '', $showPerPage));
    $this->set('spas', $this->Coupon->findAllBycategory_id('3', '', '', $showPerPage));
    $this->set('services', $this->Coupon->findAllBycategory_id('4', '', '', $showPerPage));
    $this->set('hotels', $this->Coupon->findAllBycategory_id('5', '', '', $showPerPage));
    $this->set('retail', $this->Coupon->findAllBycategory_id('6', '', '', $showPerPage));
}

Для каждого набора массивов (ресторанов, ресторанов, спа-салонов и т. Д.), Который я хочу отфильтровать через каждый купон и увеличьте их счетчик "mini_views" до 1. Я создал функцию в модели, называемую "IncreaseMiniView ($ id)".Какой лучший способ справиться с этим?Я знаю, что могу просто просмотреть каждый из них, но я не знал, был ли лучший способ (я мог бы также поместить код в представление, но я знаю, что это также лучший способ) ..

1 Ответ

1 голос
/ 18 февраля 2012

Я думаю, вы можете сделать что-то вроде этого:

$restaurants = $this->Coupon->findAllBycategory_id('1', '', '', $showPerPage);
foreach($restaurants['Coupon'] as $restaurant) 
    $couponId[] = $restaurant['id'];

$entertainments = $this->Coupon->findAllBycategory_id('2', '', '', $showPerPage);
foreach($entertainments['Coupon'] as $entertainment) 
    $couponId[] = $entertainment['id'];    

// ... repeat for all queries

$this->Coupon->updateAll(
    array('Coupon.count' => 'Coupon.count+1'),
    array('Coupon.id' => $couponId)
);

$this->set(compact('restaurants', 'entertainments'));

Сложные условия поиска и updateAll .

Сохраните все идентификаторы купонов в массиве и передайте их через метод updateAll, в котором вы можете обновить любое поле, которое хотите.

Удачи!

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