2012-07-31 53 views
2

对于模糊的标题,如果有人想编辑它来反映我发布的内容,请这样做。这是情况。我有3个表:Redbeanphp - 从外键索引获取数据

支持:

ID | contact_id |标题|问题|等

supportlogin:

ID | contact_id |登录|传递|等

联系人:

ID | first_name | last_name |电子邮件|等

我加载支持豆蛮好的,我访问的联络信息:

$support=R::load('support',1); 
echo $support->contact->first_name; 

我想同样呼应supportlogin信息:

echo $support->contact->ownSupportlogin->login; 

这是可能的,我是否正确地做这件事?我曾尝试没有成功以下几种方式:

echo $support->contact->supportlogin->login; 
echo $support->contact->ownSupportlogin->login; 
echo $support->contact->ownSupportlogin[0]->login; 

编辑:更多资讯 我做print_r($support->contact)并给出了数据:

RedBean_OODBBean Object 
(
    [null:RedBean_OODBBean:private] => 
    [properties:RedBean_OODBBean:private] => Array 
     (
      [id] => 109 
      [phone] => 1234580970 
      [first_name] => Tim 
      [last_name] => Withers 
     ) 

    [__info:RedBean_OODBBean:private] => Array 
     (
      [type] => contact 
      [sys.id] => id 
      [tainted] => 
     ) 

    [beanHelper:RedBean_OODBBean:private] => RedBean_BeanHelperFacade Object 
     (
     ) 

    [fetchType:RedBean_OODBBean:private] => 
) 

然后我做了print_r($support->contact->ownSupportlogin),这表明了:

Array 
(
    [13] => RedBean_OODBBean Object 
     (
      [null:RedBean_OODBBean:private] => 
      [properties:RedBean_OODBBean:private] => Array 
       (
        [id] => 13 
        [link] => fecd4ef67e8c789efa1792f9ee0efff4 
        [login] => 
        [password] => 
        [receiveemails] => 1 
        [contact_id] => 109 
        [role] => 1 
       ) 

      [__info:RedBean_OODBBean:private] => Array 
       (
        [type] => supportlogin 
        [sys.id] => id 
        [tainted] => 
       ) 

      [beanHelper:RedBean_OODBBean:private] => RedBean_BeanHelperFacade Object 
       (
       ) 

      [fetchType:RedBean_OODBBean:private] => 
     ) 

) 

我可以访问它使用:echo $support->contact->ownSupportlogin[13]->login;,但动态地做似乎是一个问题....

回答

1

想通了,并会离开它,以防其他人有类似的问题:1的关系:

如果你有一个1这只会工作。 Redbean将ownSupportlogin填充为与该联系人相关的所有supportlogin行的数组。如果一个表可以有许多子表,那么你需要遍历该数组并取出你想要的数据。如果它是1:1的关系,则可以使用PHP的reset()访问第一元件的数据阵列中:

echo reset($support->contact->ownSupporlogin)->login; 
+0

由于'的print_r()'和'的var_dump()'输出几乎是不可能在这种情况下阅读人类,让我只是提到**简单supportlogin元素通过可以简单地做到这一点:** 'foreach($ support-> contact-> ownSupportlogin as $ supportlogin)echo $ supportlogin->登录。'
';' – Dejv 2013-11-15 09:41:09