【发布时间】:2012-11-11 20:42:24
【问题描述】:
我正在开发一个 PHP Web 应用程序,用户可以在其中创建目的地旅行,并邀请其他用户参加这些旅行。
我有Destinations、Trips 和Users 的MySql 表,以及一个名为Invites 的表来解决Users 和Trips 之间的多对多关系。
对于这些表中的每一个,我在我的应用程序中创建了一个类(所以Destinations 是一个类,Trips 是一个类,等等)。我为这些类中的每一个都编写了一个静态函数,它使对象能够被实例化并从 MySQL 查询中分配它们的属性(因此从SELECT * 查询返回的每一行都会导致一个对象被实例化并分配属性)。
我正在尝试创建一个页面,我的用户可以在其中查看他们计划的所有旅行的详细信息。此页面将显示目的地(来自Destinations)、旅行详情(例如来自Trips 的日期)和他们邀请的用户的详细信息(例如来自Users 的用户名)并将所有这些数据放在一个html中每个行程都是一行的表格。
为了实现这一点,到目前为止,我一直在实例化与用户的 user_id、Destinations 和 Invites 相关的 Trips,这与 Trips 相关,以及与 Users 相关的 Users 987654339@。然后,我根据需要使用嵌套的 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 结果中实例化对象并正确分配它们的属性?
b) 即使这样做了,我如何避免昂贵的foreach 循环以在正确的行程旁边显示正确的数据?
是否有“最佳实践”方式以面向对象的方式显示来自多个相关数据库表的数据?
【问题讨论】:
-
2 个非常有用的答案 - 非常感谢。
标签: php mysql oop join relational-database