ユーザーが目的地への旅行を作成し、これらの旅行に他のユーザーを招待できる PHP Web アプリケーションに取り組んでいます。
Destinations
、Trips
、およびのMySql テーブルと、 との間の多対多の関係を解決するためにUsers
呼び出されるテーブルがあります。Invites
Users
Trips
これらのテーブルごとに、アプリケーション内にクラスを作成しました (Destinations
クラスもクラスも同様Trips
です)。オブジェクトをインスタンス化し、MySQL クエリからプロパティを割り当てることができるように、これらのクラスごとに静的関数を作成しました (したがって、クエリから返される各行はSELECT *
、オブジェクトがインスタンス化され、プロパティが割り当てられます)。
ユーザーが計画したすべての旅行の詳細を表示できるページを作成しようとしています。このページには、目的地 ( からDestinations
)、旅行の詳細 ( からの日付などTrips
)、および招待したユーザーの詳細 ( からのユーザー名などUsers
) が表示され、このすべてのデータが各旅行が行である html テーブルに配置されます。
Trips
これを達成するために、これまでのところ、どれがユーザーのuser_id
に関連しDestinations
、Invites
どれがそれらTrips
に関連し、Users
どれがそれらに関連しているかをインスタンス化してきましたInvites
。次に、ネストされた foreach ループを使用して、以下のように必要に応じてこれらを表示しました。
foreach($trips as $trip) {
foreach($invites as $invite) {
foreach($invited_users as $invited_user) {
if($invite->trip_id == $trip->id && $invite->guest_id == $invited_user->id) {
echo $invited_user->name;
} } } }
私が見ることができるのは恐ろしいことであり、これを行う方法はありません。
読んでみると、MySQL を使用して 4 つのテーブルを結合し、関連する旅行に関連するデータのみを選択したいと思います。よくわからないのは次のとおりです。
a) オブジェクトをインスタンス化し、この MySQL の結果からそれらのプロパティを正しく割り当てるにはどうすればよいですか?
foreach
b) それが完了したとしても、正しいトリップと一緒に正しいデータを表示するためのコストのかかるループを回避するにはどうすればよいですか?
オブジェクト指向の方法で複数の関連データベース テーブルからのデータを表示する「ベスト プラクティス」の方法はありますか?