用于定义2个连接对象的结果的类

时间:2012-04-11 17:00:59

标签: php oop object

我有三个类来定义对象:UsersMembersProjects

  • User类定义了idemail_address等详细信息 name
  • Member类定义了iduser_id等详细信息, project_iddatetime_accepted
  • Project类定义了idtitle等详细信息 虽然不重要。

系统有UsersProjectsMember UserProject的{​​{1}}。换句话说,Member类定义了两个对象之间的链接。

我的问题是:

我想获得属于某个项目的成员列表,我想从两个类(MemberUser - 中收集变量 - 例如User:{{1我的结果集中有{}和nameMember}。

我是否需要定义一个包含两个类中所有变量的新类,或者是否有一些其他更高效的结构可以用来整齐地以面向对象的方式处理它?<​​/ p>

3 个答案:

答案 0 :(得分:1)

您可以通过以下方式轻松地将StdObject强制转换为数组:

$result = array_merge((array)$user, (array)$member);

然后你将拥有一个你需要的变量数组。将它添加到Project类中的新函数, 或者考虑使用会员作为用户类的孩子。

答案 1 :(得分:0)

使用Active Record Models时,通常在一个对象中有一个方法来获取相关对象。如果您想将SQL简化为一个查询,那么您将远离活动记录模型。这很好,只会改变你解决问题的方式。

我过去所做的是两种方法之一:

  1. 例如,要向“AR”添加“虚拟属性”,我的“登录(用户)”类具有属性“角色”,该属性在其标准加载查询中由JOIN填充。

  2. 创建一个Report对象,我将其扩展到更复杂的情况。 Report子类具有一个属性,即多表查询,以及表示WHERE子句参数的其他属性。该类生成一个数组数组。

答案 2 :(得分:0)

我最终要解决此问题的方法是在Project内创建UserMember对象。构造成员时创建了对象。工作还可以。