L'enregistrement des données avec saveAll() dans CakePHP
Cela pourrait ne pas être le problème avec d'égouttage, la situation est comme ça. J'ai le tableau des messages, et le tableau sent_messages, qui détient le message d'id et l'id utilisateur. Les modèles sont créés, où Messaage hasMany SentMessage, et SentMessage belongsTo Message. J'ai besoin d'enregistrer un seul message dans messages table, et enregistrer les id utilisateur et id de message dans *sent_messages* table. Le problème commence quand j'essaie d'enregistrer que dans MessageController. Voici le code:
function custom() {
if (!empty($this->data)) {
$this->loadModel('User');
$userIDs = $this->User->listActiveUsers();
$this->data['Message']['message_type_id'] = 2;
if ($this->Message->save($this->data)) {
array_pop($this->data);
foreach ($userIDs as $key => $value ) {
$this->data['SentMessage'][$key]['user_id'] = $value;
$this->data['SentMessage'][$key]['message_id'] = $this->Message->getLastInsertID();
}
//die($this->Message->SentMessage->saveAll($this->data));
if ($this->Message->SentMessage->saveAll($this->data)) {
$this->Session->setFlash('Data saved', 'success');
}
else {
$this->Session->setFlash('Data not saved', 'error');
}
}
}
}
Toute aide serait appréciée.
- Et quel est le problème exactement?
- Le problème est-il l'habitude de sauvegarder les données de sent_messages table. Il enregistre les données dans la table message, mais pas dans sent_messages. Et des suggestions sur l'utilisation de loadModel de cette façon? Est-ce une bonne pratique?
Vous devez vous connecter pour publier un commentaire.
Je pense que ton problème viens de l'utilisation de "$key" comme clé pour $identifiants tableau, d'égouttage prendre indexée tableau pour hasMany relations en tant que paramètres.
Plus-plus, d'égouttage est parfait pour enregistrer deux modèle en même temps. Voici quelque chose qui devrait fonctionner :
Vérifier la doc ! http://book.cakephp.org/view/1031/Saving-Your-Data
Sur l'utilisation de loadModel, je suppose que vous êtes SentMessage modèle est lié à l'Utilisateur, de sorte que vous pouvez utiliser : $this->Message>SentMessage->Utilisateur. Mais bien aucune idée de qui est le plus efficace.
Façon la plus simple pour enregistrer toutes les données dans cakephp
Remarque : nom des champs dans la table et dans le tableau devrait être la même.