Hello all !
J'aimerai enregistrer plusieurs checkbox dans ma bdd mais je n'arrive pas a faire le traitement ...
Je ne sais pas si je doit utiliser le HasAndBelongsToMany ou le traitement directement dans mon controller.
Voici le multiple checkbox :
<?php echo $this->Form->input('category_id', array('label'=>false,'div'=>false,'type'=>'checkbox','checked'=>true,"multiple"=>"checkbox"));?>
et le résultat me donne un array
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'
SQL Query: INSERT INTO `bdd`.`posts` (`slug`, `user_id`, `name`, `category_id`) VALUES ('fdef', 1, 'fdef',Array)
Et j'ai aussi une erreur du style :
Notice (8): Array to string conversion [CORE/Cake/Model/Datasource/DboSource.php, line 1001]
Merci par avance pour votre aide :)
Salut,
tu devrais commencer par relire le paragraphe sur les multiples checkbox du cookbook (cherche "$attributes'multiple']" dans la page).
Ici tu as déclaré que tu allais donner un tableau de checkbox, mais tu n'as pas donner ces checkbox, la requête SQL t'affiches donc un tableau vide (il faut lire l'erreur). Pour cela regarde le champs $options dans l'exemple donnée dans l'exemple ci-dessous tiré du cookbook :
$options = array(
'Value 1' => 'Label 1',
'Value 2' => 'Label 2'
);
echo $this->Form->select('Model.field', $options, array(
'multiple' => 'checkbox'
));
Pour ce qui est des relations entre tables il faudrait que tu nous décrives ce que tu veux faire. Même si la structure actuelle de ta base de donnée semble laisser croire que tu as une relation category hasMany post et post belongsTo category.
Piverte
Merci pour ta réponse Piverte !
J'ai changé mon checkbox en ca :
<?php echo $this->Form->input('tags', array('type' => 'select', 'multiple' => 'checkbox', 'options' => $categories, 'selected' => $categories)); ?>
Voici mon code dans le Model
public function afterSave($created){
$selected = $this->data'Annonce']'tags'];
debug($this->data);
}
Voici le debug
array(
'Annonce' => array(
'slug' => 'checkbox',
'user_id' => '2',
'name' => 'checkbox',
'tags' => array(
(int) 0 => '2',
(int) 1 => '3',
(int) 2 => '6'
),
'id' => '44'
)
)
Donc maintenant j'aimerai faire un INSERT en BDD. J'ai bien créer un HasAndBelongsToMany et j'arrive à lire quand j'insere manuellement mais je ne sais pas comment je peux faire mon INSERT.
Merci par avance.
Effectivement il faut utiliser la methode save avec un create avant. Et j'avais oublier de lier par hasmany ModelAModelB ...
Merci pour ton aide en tout cas ^^