CakePHP: Nasıl Model.id üzerinde otomatik artış devre dışı bırakabilirsiniz?

4 Cevap php

CakePHP 1.3.0, mysqli

Ben bir model olan ID should basılı bir form benzersiz sayı Manifestosu var. Manifest.id birincil anahtar olarak ayarlanmış Ancak, CakePHP alanında otomatik artış kurarak bana yardımcı oluyor. Otomatik artış devre dışı bırakmak için başka schema.php ve / veya yoluyla bayrak için bir yol alan var mı? Onsuz sadece düz, eski birincil anahtarı gerekir.

Ben hayal edebiliyorum yalnızca diğer çözüm, ayrı bir bildirim numarası alanına ekleyerek ve yarım düzine diğer tablolardaki yabancı anahtarları değişiyor. Biraz savurgan ve sezgisel değil.

4 Cevap

Ben sadece benim kek sandbox bu test ve işe yaradı.

Yapmanız gereken tek şey saklıyorsun veri id alanını ayarlanır. Yani, yazılan verilerin kaydedilmesi konum ve kimliği 200 olmak istiyorsanız (keyfi, başka bir tablo alanı veya kullanıcı girişi ya da bu kaynağı için başka bir şey kullanabilirsiniz).

$this->data['Manifest']['id'] = 200;

Olduğunu ne id yıllardan için kendi değerlerini ayarlamak mümkün olmaktan ziyade oto, onları artan, peşindeler?

Sen eklenti şeklinde Kimlik alanını eklemek gerekir. Sadece varsayılan türü veya CakePHP gizli bir alana dönecek geçersiz kılmak emin olun.

echo $this->Form->input('id', array('type' => 'text'));

Ben bu konuda biraz meraklı değilim. Tabii ki set (sizin durumunuzda kimliği olan) birincil anahtarı olmayan bir kaydı kaydedemezsiniz. Eğer ID otomatik olarak artırılır olmak istemiyorsanız Yani, o zaman, kendi kimliğinizi tasarruf edilmelidir. Ve bu bir sorun neden olmamalıdır.

Bir mysql veritabanı kullanıyor musunuz? Eğer öyleyse, kimlik alanında ayarlanır true AUTO_INCREMENT var mı? Bir kaydı böyle olmaz kaydetmek zaman sonra mysql kendisi otomatik kimliğini arttıracaktır?

Sen Manifest modeli şema ayarlayabilirsiniz: http://book.cakephp.org/view/442/_schema.