脚本宝典收集整理的这篇文章主要介绍了php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有针对Destinations,Trips和Users的MysqL表,以及一个名为InvITes的表来解决Users和Trips之间的多对多关系.
对于这些表中的每一个,我在我的应用程序中创建了一个类(因此Destinations是一个类,Trips是一个类,等等).我为这些类中的每一个编写了一个静态函数,它允许实例化对象并从MySQL查询中分配它们的属性(因此从SELECT *查询返回的每一行都会导致实例化对象并分配属性).
我正在尝试创建一个页面,用户可以在其中查看他们计划的所有行程的详细信息.此页面将显示目的地(来自目的地),旅行详细信息(例如来自Trips的日期)以及他们邀请的用户的详细信息(例如来自用户的用户名),并将所有这些数据放在htML表中,其中每次旅行都是行.
为了实现这一点,到目前为止,我一直在实例化与用户的user_id相关的Trips,与这些Trips相关的Destinations和Invites,以及与这些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个表,然后只选择与我的相关旅行相关的数据.但我不确定的是:
b)即使完成了这项工作,如何避免昂贵的foreach循环在正确的行程中显示正确的数据?
使用OOP的一种天真但简单的方法:一个User类,它具有检索用户相关行程的方法.
class User { PRivate $id; public function __construct($id) { $this->id = $id; } public function getTrips() { $trips = array(); // Run your query using $this->id to build the WHERE clause return $trips; } } class Trip { // Array of User objects invited to the trip private $invited = array(); // Other methods here to add/retrieve invited users } $user = new User(1); foreach ($user->getTrips() as $trip) { // Do something with $trip }
以上是脚本宝典为你收集整理的php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法全部内容,希望文章能够帮你解决php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。