如何在RedBeanPHP中拉出与外键相关的bean?

时间:2010-10-20 12:33:57

标签: mysql orm php-5.3

我正在将Zend和Mysql的RedBean PHP ORM 1.2用于新项目。我仍然在学习它,它在很多场景下运行良好,除了我无法找到如何加载外键相关的bean。请允许我解释一下。

我有两张桌子;成员和饲料。每个“feed”通过外键(在MySQL中)链接到成员。架构(各种类型)是这样的:

Member table:
 ID - Primary Key
 NAME - A text field

Feeds Table:
 ID - Primary Key
 COMMENT - A text field
 USER_ID - This is linked via a MySQL FK to Member.ID

我想做的是:

 $feed = $rb->load('feeds',1);
 $feed->member->NAME //this should get me the name of the member using the FK

但是我无法看到我能做到这一点。我已经阅读了有关链接,关联和树的信息,但是没有一个适用于表中已经存在数据的场景,我只需要拉一个bean和另一个相关的bean。为了澄清,这里是执行我想要的代码:

$feed = $rb->load('feeds',1);
$member = $rb->load('members',$feed->USER_ID);
$member->NAME //This works

我真的想避免使用额外的一行,更重要的是必须在应用程序级别重新声明该FK。

欢迎您提出意见和建议。

1 个答案:

答案 0 :(得分:0)

RedBean是一个支持代码而不是模式定义的ORM。虽然您可以将RedBean与预定义的模式一起使用,但如果您将其视为对象数据库,则它最有效。

R::setup();

class Model_Feed extends RedBean_SimpleModel  {
  public function getMember() {
    $member = R::relatedOne($this->bean,"member");
    return $member;
  }
}

测试一下:

//test....
$feed = R::dispense("feed");
$feed->comment = "lorem ipsum";
$id = R::store($feed);
$member = R::dispense("member");
$member->name = "Xavier";
R::clearRelations($feed,"member",$member);
$feed = R::load("feed",$id);
echo $feed->getMember()->name; //prints: Xavier