Bonjour à tous,

Je planche sur un probleme et je ne sais pas quelle méthode adoptée.
Je souhaite que mes articles qui ont plus d'un an passe dans les archives soit sur une autre table.
Table 'Articles' -> Table 'Archives'
Ce que je cherche a faire c'est recuperer les données puis les enregistrer dans une autre table.
Cakephp 3
// je recupere les données (controller)

$article = $this->Articles->get($id);
unset($article->id);
unset($article->created);
unset($article->modified);

// je charge mon model Archives pour enregister la article dans celui-ci

$this->loadModel('Archives');
$archive = $this->Archives->newEntity();
$archive = $this->Archives->patchEntity($archive, $article);
$this->Archives->save($archive);

Mais cela ne fonctionne pas ! Quelqu'un aurait une idée !!!
Un grand merci !!!

5 réponses


Muxabble
Réponse acceptée

Il me semble que tu doit faire un truc du genre avant ton patchentity

$archives->id = $article->id

Salut, tout d'abord deux solutions s'offre à toi soit en CRON il le fait tout seul soit tu doit déclencher l'action "à la main" en la chargant style /admin/archives/archiver

Moi je ferais un truc du genre pour récupérer les données, alors je ne suis pas sur pour la formule du WHERE mais en gros tu doit faire en sorte qu'il récupère tout les articles qui on un an à partir d'aujourd'hui

$article = $this->Articles->find('all')->where(['created>' => 'NOW() - 360');

Deja un grand merci pour ton aide !
Récuperer les données n'est pas un probleme c'est au niveau de l'enregistrement des données vers une autre table qui me pose probleme.
Donc j'ai recupéré les données de la table Articles maintenant je voudrais les enregistrers dans un nouvel enregistrement de la table Archives.
Cela me mait une erreur Marshal ???!!!

Merci pour ta réponse c'est super sympa ! Tu as raison ca fonctionne avec ta méthode...
Mais cela reste fastidieux d'ecrire chaque entrée $archives->id = $article->id

Cela ma donné une idée en implantant dans la table et faire un $article->toArray()

$archives = TableRegistry::get('Archives');
$archiveToSave = $archives->newEntity($article->toArray());

Le Framework fonctionne ainsi, mais cela ne t'empèche en rien de faire en sorte de rendre la tâche moins fastidieuse ;)