Zaman olmamalıdır CakePHP autoModel kullanarak Sorunu

1 Cevap php

Benim görünümünde bir hata alıyorum:

Warning (512): SQL Error: 1054: Unknown column 'Model.id' in 'where clause' [CORE\cake\libs\model\datasources\dbo_source.php, line 525] $sql = "SELECT Model.model_id, Model.pic_location, Model.model_name FROM models AS Model WHERE Model.id = '20' LIMIT 1" $error = "1054: Unknown column 'Model.id' in 'where clause'" $out = null

Benim modeli maalesef nedeniyle ben çalışıyorum eski bir veritabanı için, "Model" olarak adlandırılır. Ben hata ayıklama kullanılan ve açıkça 'model_id' için PrimaryKey ayarı (aşağıya bakınız) benim modeli kod rağmen, (aynı zamanda yukarıdaki SQL görüntülendiği gibi) 'id' arasında primaryKey kullandığını tespit ettik.

Veritabanı tablo model_id bir birincil anahtarla modelleri, bu yüzden ben sadece sistem autoModel kullanıyor varsayabiliriz.

Benim model kodu 'model.php' olduğunu:

    <?php class Model extends AppModel {

var $name = 'Model';
var $primaryKey = 'model_id';

//The Associations below have been created with all possible keys, those that are not needed can be removed
var $hasMany = array(
	'Pic' => array(
		'className' => 'Pic',
		'foreignKey' => 'model_name',
		'dependent' => false,
		'conditions' => '',
		'fields' => '',
		'order' => '',
		'limit' => '',
		'offset' => '',
		'exclusive' => '',
		'finderQuery' => '',
		'counterQuery' => ''
	)
);}?>

Ben aslında elle oluşturulan ve ben bu hatayı vurduğunuzda, (Ben hasMany ilişkide boş alanları içermiyordu hariç) aynı sonuçları ile ... o pişmiş.

Ben geçici uygulama düzeyinde önbelleğe kapalı ve önbellek temizlenir, ama hiçbir şey yardımcı olur var. Nasıl benim modeli kodu kullanabilirsiniz yapabilir?

1 Cevap

Ben başka bir şey için Model modelini yeniden adlandırmak gerekecek korkuyorum. İşletme Model class da aynı zamanda {[(0)] olarak adlandırılır} baz model sınıf uzandığı, AppModel uzanır. Sen belaya olsun bu şekilde uğrarsınız.

Eğer eski bir veritabanı varsa, sadece modelinden farklı bir adla bir tablo kullanmak $useTable niteliğini ayarlayın.