【发布时间】:2012-07-14 21:14:56
【问题描述】:
我正在编写一个小型框架,我的目标是让我的开发人员在添加/插入资源后,可以轻松地设置重定向到资源的详细信息页面。
通常这就像 PDO::lastInsertID() 一样简单,但我使用的不仅仅是 ID 来识别资源,我还使用资源名称/标题的格式化版本。
例如,一个新的锦标赛可能被称为“测试锦标赛”,因此它的资源 URI 将是 domain.com/tournament/328-test-tournament。
所以当我在插入后重定向时,我需要重定向到“328-test-tournament”,而不仅仅是“328”。这是出于 URL 完整性目的而设计的。我不希望人们使用不匹配的 ID 和标题访问单个资源。
也就是说,在我插入之后,我希望能够自动返回的不仅仅是 ID,而是我输入的整个数据集,这样我就可以格式化标题并重定向。
我可以在控制器中这样做:
$this->TournamentModel->insert();
$id = PDO::lastInsertID();
$title = my_title_formatting_function($_POST['title']);
@header("Location: domain.com/tournament/{$id}-{$title}");
但我想要一个稍微优雅一点的解决方案,像这样:
$id = $this->TournamentModel->lastInsert();
lastInsert 实际上是核心模型中的公共方法,它不仅检索最后一个插入的 id,而且检索整行。然后我会在那里处理标题格式和 id 连接。
这样的东西存在吗?或者至少有一个 PDO 方法可以返回插入的表,以便我可以使用表名和 id 构造查询?
【问题讨论】:
-
插入后,从上次插入ID中选择你想要的所有字段