0

複製する必要があるいくつかのモデル カテゴリがあります。私は、既存のものをコピーしてそれを実行し、その id プロパティを設定解除して保存できることを知っています。しかし、モデルにいくつかの hasMany アソシエーションがある場合、それを行うのは良い方法ではないようです。次に、モデルでそのようなアクションを実行して保存し、すべての関連付けで同じことを実行して保存する必要があります。

モデルでメソッドを定義してから呼び出す必要がありますか?

配列ではなく、オブジェクトのようなモデルを取得できますか?

次のように機能させる方法はありますか?

$category = $this->Category->find("first", array(
    'conditions' => array('categoryID' => $categoryID),
    'contain' => array('Connected')
));

$newCat = clone $category; 

$this->Category->save($newCat);
4

1 に答える 1

3

あなたのコードで例えば。$category実際には配列であるのに、変数がオブジェクトであると想定しているようです。したがって、クローニングの問題はありません。Cake モデルは、アクティブなレコード インスタンスとは異なります。配列を消費して生成するだけです。

Elaborating ..必要なものを達成するには、$category配列内のすべてのレコードをループし、主キー フィールド (通常は id) を設定解除する必要があります。その後、その配列を Category->saveAll() に渡すことができます。

于 2013-01-06T13:36:06.947 に答える