Bir CakePHP modeli yeniden örneğinin olmadan kendi tablosunu değiştirebilir miyim?

2 Cevap php

Ben bir nesnenin her örneği ilişkili kayıtları ile veritabanında kendi tablo vardır, değişmez bir miras veritabanı şeması ile çalışıyorum. Ben modeli örneği bir model useTable her zaman değiştirmek gerekir, ama Cake güzel önbelleğe alma ve ne değildir saklayın.

Her birkaç not nesneleri (belongsTo Pad Pad hasMany Not Not) birçok ped nesneler, söylüyorlar. Her ped, ancak her nota ('pad_ {id}' başlıklı demek) bir veritabanında o kendi tablo vardır, pedleri tablodaki bir kaydı var. Bu şema sabittir ve bunu kullanmanız gerekir.

Şu anda herhangi bir tasarruf yapmak zorunda değilsiniz, bu yüzden okumayı destekleyecek modelin önce bulmak bunu:

function beforeFind($query_data) {
	if(empty($query_data['pad_id'])) {
		return false;
	} else {
		$this->useTable = $query_data['pad_id'];
		parent::__construct();
		return $query_data;
	}

}

Bu veritabanında kullanılan modelin tablosunu değiştirir, ve gayet iyi çalışıyor zaman Core::debug > 0. O sıfırdır Ancak, ben CakePHP model kodunu önbelleğe ve düzgün bir tablo değişmez düşünüyorum. I / pedleri / view / {pad_id} veya ne olursa olsun eylem dinamik olarak bu tabloyu değiştirir ziyaret ettiğinizde her durumda, ben bir 404 hatası alıyorum. Oldukça ben ayıklama açtığınızda gayet iyi çalıştığını çünkü tam hata, ne olduğunu anlamaya olamaz. Yani bu sorunu debuging üzerinde herhangi bir işaretçiler da yardımcı olacaktır.

Teşekkürler!

2 Cevap

Sen setSource() Model kullanarak tabloyu değiştirmek için kullanmak gerekir. $this->setSource('pad_x') 'pad_x' için masa ve modelin şema sıfırlanır. API reference

var $persistModel = false; sizin denetleyicisi veya AppController deneyin.

Bkz: http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-speed-up-cakephp-apps/