私は CakePHP が初めてで、SQL クエリがここでどのように機能するかわかりません。プレイヤーに関するニュースを消去する削除ボタンがあります。それが行っていないこと (およびすべきこと) は、「fc_players」テーブルの「ニュース」列に格納されているニュースの数も処理することです。昔ながらの方法で、私は次のように行きます:
("SELECT player FROM entries WHERE id = '" . $id . "'");
(プレーヤーの $name を返します。データベースの構築方法により、$id だけを使用することはできません。「エントリ」は、ニュースが格納されるテーブルです)
("SELECT news FROM fc_players WHERE name = '" . $name . "'");
(データベースにある特定のプレーヤーに関するニュースの数を返します)
1 つだけの場合は、データベースから $name を削除します。
("DELETE FROM fc_players WHERE name = '" . $name . "'");
私はやろうとしまし
$this->FCPlayer->deleteAll(array('FCPlayer.name' => $name));
たが、何らかの理由で機能しません。
それ以上の場合は、単純に減らします。
$news = $news - 1;
("UPDATE fc_players SET news = '" . $news . "' WHERE name = '" . $name . "'");
プレーンな PHP で処理できますが、Cake は少し難しく、有用な例が見つかりません。SQLクエリからCakePHPに翻訳するのを手伝ってくれますか、それとも実際にそれを説明している記事に案内してくれますか?
ありがとう!
編集:
わかりました、ニックとスティーブ、答えてくれてありがとう。残念ながら、それは私の問題を解決しません。SQLクエリの処理に問題があると思います。
$this->Session->setFlash($id, 'success');
正しいエントリ ID が表示されるので、$id で問題ありません。
しかし、私がプレイヤー名を取得しようとしているとき:
$player = $this->Entry->field("player", array("id" => $id));
または
$this->Entry->id = $id;
$player = $this->Entry->field('player');
またはクエリを実行
player = $this->Entry->query("SELECT player FROM entries WHERE id = '" . $id . "'");
結果は空白です。次のようにして、プレイヤー名を取得できました。
$player = $this->Entry->field('player');
しかし、削除しているエントリではなく、最新のエントリからプレーヤーの名前が返されただけです。
どこを間違えているのかさっぱりわかりません。setFlash が処理できないある種の od 配列またはオブジェクトを返す可能性はありますか? もしそうなら、なぜ最後の例がうまくいくのですか?