私は、開発者がリソースの追加/挿入後にリソースの詳細ページへのリダイレクトを簡単に設定できるようにすることを目標とする小さなフレームワークを作成しています。
通常、これは PDO::lastInsertID() と同じくらい簡単ですが、リソースを識別するために ID だけでなく、リソースの名前/タイトルの書式設定されたバージョンも使用しています。
たとえば、新しいトーナメントが「テスト トーナメント」と呼ばれる場合、そのリソース URI は domain.com/tournament/328-test-tournament になります。
したがって、挿入後にリダイレクトするときは、「328」だけでなく「328-test-tournament」にリダイレクトする必要があります。これは、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 の連結をその場で処理します。
このようなものは存在しますか?または、少なくとも、テーブル名と ID を使用してクエリを作成できるように、挿入されたテーブルを返す PDO メソッドはありますか?