Je suis tout nouveau à Doctrine et Code Igniter et je rencontre un problème avec l'une de mes tables.Le type enum de Doctrine n'autorise pas l'ajout de valeurs non énumérées?
J'ai un modèle que je pensais ne permettrait 4 lettres différentes (pour les tests à ce moment)
<?php
class Photo extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('photo_path', 'string', 255, array('unique' => 'true'));
$this->hasColumn('category', 'enum', null,
array('values' => array('a', 'b', 'c', 'd'))
);
$this->hasColumn('token', 'string', 255);
}
public function setUp()
{
$this->actAs('Timestampable');
}
public function preInsert($event)
{
$this->token = (sha1(rand(11111, 99999)));
}
}
J'ai une vue qui a une boîte de sélection et un formulaire de téléchargement
<?php echo validation_errors('<p class="error">','</p>'); ?>
<div id="upload">
<?php
$categoryOptions= array(
'' => '',
'a' => 'a',
'b' => 'b',
'c' => 'c',
'1' => '1'
);
echo form_open_multipart('admin/addImage');
echo form_upload('userfile');
echo form_dropdown('letter', $categoryOptions);
echo form_submit('upload', 'Upload!');
echo form_close();
?>
</div>
Lorsque je sélectionne '1' dans la boîte de sélection, je m'attendrais à ce que Doctrine lance une erreur et n'insère pas cet enregistrement, cependant il l'insérera avec une catégorie '1'. Y a-t-il un pas que je ne fais pas pour que la colonne enum limite l'entrée?
Merci d'avance.
Ok - J'ai donc ajouté cela à mon fichier plugin d'allumeur de code.Et quand j'insère ce champ en '1', la lettre 'a' apparaît dans la base de données (je suppose que c'est la première lettre du tableau enum) Si je passe le charabia comme 'ahjkh' le champ semble être nul dans la base de données Même si j'ai ajouté 'notnull' => true à la ligne hastable, utiliser le hook de validation, comme prevalidate, est un moyen d'obtenir le tableau enum à partir de la définition de la table, ou dois-je refaire le tableau cette fonction et juste utiliser in_array? Merci beaucoup – Rapture
Ahhh, très utile! Merci, je l'ai eu correctement dans le modèle, mais pour une raison quelconque, le notnull ne semble pas fonctionner .. Votre aide avec le getEnumValues était super et m'a permis d'ajouter ma propre validation de formulaire, de sorte que tout se passe bien, merci beaucoup. – Rapture