Klonowanie encji wraz z zależnościami w CakePHP
Pokażę jak klonować encję wraz z zależnościami w CakePHP 3. Najpierw pobież obiekt, który chcesz sklonować wraz z zależnościami.
$article = $this->Articles->get($id, [ 'contain' => [ 'Packages', 'Tags' ] ]);
$newArticleData = $article->toArray();
unset($newArticleData['id']);
unset($newArticleData['created']);
unset($newArticleData['modified']);
foreach ($newArticleData['packages'] as $key => $package) {
unset($newArticleData['packages'][$key]['id']);
}
foreach ($newArticleData['tags'] as $key => $tag) {
unset($newArticleData['tags'][$key]['id']);
}
Pozostało już tylko utworzyć nową pustą encję, przekonwertować dane i przekazać je metodzie patchEntity, a na
koniec zapisać.
$newArticle = $this->Articles->newEmptyEntity();
$newArticle = $this->Articles->patchEntity($newArticle, $newArticleData, [
'associated' => [
'Packages',
'Tags'
]
]);
if ($this->Articles->save($newArticle)) {
//data saved
}
