我对 CakePHP 有点陌生,无法弄清楚这里的 sql 查询是如何工作的。我有一个删除按钮,可以删除有关玩家的消息。它没有做的(它应该做的)也是处理新闻的数量,这些新闻存储在“fc_players”表的“新闻”列中。以一种老式的方式,我会喜欢:
("SELECT player FROM entries WHERE id = '" . $id . "'");
(返回玩家的 $name;由于数据库的构建方式,不能只使用 $id;“entries”是存储新闻的表)
("SELECT news FROM fc_players WHERE name = '" . $name . "'");
(返回数据库中有多少关于某个玩家的新闻)
如果只有一个,则从数据库中删除 $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 数组或对象?如果是这样,为什么最后一个例子有效(有点)?