CakePHP counterCache ile sorunu

1 Cevap php

Ben bir video paylaşım sitesi projesinde bu modelleri var:

 class Video extends AppModel {
        var $name = 'Video';
        var $hasAndBelongsToMany = array(
        	'Tag' => array(
        		'className' => 'Tag',
        		'joinTable' => 'videos_tags',
        		'foreignKey' => 'video_id',
        		'associationForeignKey' => 'tag_id',
        		'unique' => true,
        	)
        );
    }

    class Tag extends AppModel {
        var $name = 'Tag';

        var $hasAndBelongsToMany = array(
        	'Video' => array(
        		'className' => 'Video',
        		'joinTable' => 'videos_tags',
        		'foreignKey' => 'tag_id',
        		'associationForeignKey' => 'video_id',
        		'unique' => true,
        	)
        );

    }



 class VideosTag extends AppModel {
        var $name = 'VideosTag';

        var $belongsTo = array(
        	'Video' => array(
        		'className' => 'Video',
        		'foreignKey' => 'video_id',
        	),
        	'Tag' => array(
        		'className' => 'Tag',
        		'foreignKey' => 'tag_id',
        		'conditions' => '',
        		'counterCache' => 'videos_tag_counter'
        	)
        );
    }

Etiketleri için counterCache çalışmıyor. Nedenini bilmiyorum ve ben videosTag modeline BeforeSave () geri arama eklemek için çalıştım ben bir video kaydedilir olsun zaman çalıştırmak değildir (ve bu video etiketleri sahip olduğunu buldu ve ben veritabanı yani nasıl ilişki onları bulmak videosTags kaydedilir?)! bu neden oluyor herhangi bir vücut açıklayabilir.

1 Cevap

Bu gibi verilerle bir video kaydetme:

array(
  'Video' => array(
    ...
  ),
  'Tag' => array(
    'Tag' => array(
      ...
    ),
  ),
);

Kek gerektiren (hatta kullanarak) olmadan HABTM verileri işlemesi nedeniyle video modeline aracılığıyla ile / / join modeli VideosTag modeline BeforeSave geri arama tetikleyecek değil.

Hayır sen kadar ben farkında olduğum gibi, ulaşmak için çalışıyoruz ne için dahili işlevselliği vardır.

Counter Cache behavior for HABTM relations, ihtiyacınız ne olabilir göz atın