我正在编写一个小框架,我的目标是让我的开发人员在添加/插入资源后,可以轻松地设置重定向到资源的详细信息页面。
通常这就像 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 构造查询?