注:私は最初にこの質問を約1時間前に行いましたが、最近、大きなコピーアンドペーストの間違いを犯したことに気づきました。古い投稿を削除して最初からやり直す方が簡単だったほど重要なものです。申し訳ありません。
CakePHPフレームワークでは、モデルを更新した後、SQLクエリをダンプしました。COUNT(*)
明らかな理由もなく、2回呼び出されます。
だから私は2つのモデルを持っています、$Foo
そして$Bar
。簡単にするために、私はそれらの間の関係を定義していません$belongsTo
。$hasMany
問題は$Fooのみに関係しますが、念のために$Barのコードも含めました。
$data = array(
'something' => 12,
'something_else' => $this->Bar->field('id', $conditions),
);
$this->Foo->id = $this->Foo->field($data);
$this->Foo->save($data);
$Bar.id
一連の条件(ここでは関係ありません)に従ってフィールドを取得しています。そのIDを使用して、に$data
INSERTまたはUPDATEする必要があるかどうかを判断し$Foo
ます。$Foo
の要件を満たすIDがある場合、$data
その値が返されます。falseでない場合は、返されます。CakePHPのアーキテクチャによるとsave()
、有効なIDがある場合は更新されます。それ以外の場合はINSERTになります。私は異常なことは何もしていないと確信しています。
SQLダンプに表示されるものは次のとおりです。
SELECT `Foo`.`id` FROM `foos` AS `Foo` WHERE `something` = 12 AND `something_else` = 1 LIMIT 1
SELECT COUNT(*) AS `count` FROM `foos` AS `Foo` WHERE `Foo`.`id` = 1
SELECT COUNT(*) AS `count` FROM `foos` AS `Foo` WHERE `Foo`.`id` = 1
UPDATE `foos` SET `something` = 12, something_else` = 1 WHERE `foos`.`id` = 1'
私の人生では、COUNT()
なぜそれが必要なのか、ましてやなぜそれが2回呼び出されるのか理解できません。誰かが何が起こっているのか考えていますか?助けてくれてありがとう。