0

コントローラーは、受信した要求データをループして対応するレコードを作成することにより、1 つ以上のレコードを作成/保存する必要があります。あなたは疑問に思うかもしれません:saveAll()一度にすべてを使用して保存しないのはなぜですか。簡単に言えば、特定のレコードは、同じループで作成された他のレコードの ID を参照する必要があるということです (それらの ID はまだ存在しません)。

私のループは最初のレコードを正常に作成します。ループの後続の反復では、使用時に新しく作成されたレコードを「見る」ことができませんfind()。返された配列をエコーする場合、結果はそこにありますが、新しく作成されたものはありません。なんで?CakePHP の魔法は、ある種のキャッシングのために新しいレコードを利用できないようにしていますか?

最新のレコードを含まない私のコードは次のとおりです。

$newest_parent_question = $this->Question->find('first', array(
                                                            'conditions'=>array('Question.perm_id'=>$parent_question['Question']['perm_id']),
                                                            'order' =>  array('Question.created DESC')
                                                            ) 
                                                );

ただし、新しいレコードは次のように返されます。

$newest_parent_question = $this->Question->find('all');
4

1 に答える 1

1

クエリに問題があります。

$parent_question['Question']['perm_id']間違っている可能性が高いです。CakePHP があなたのレコードを見つけられなくするようなことは何もしません。

変数をデバッグして、正しい ID で正しいクエリを作成していることを確認するだけで、準備完了です。

(ID を作成している実際の方法を見なければ、それ以上のことはできません)

于 2013-05-02T02:47:10.610 に答える