我正在将RedBean PHP ORM 1.2与Zend和Mysql一起用于新项目。我仍在学习它,并且它在许多情况下都可以很好地工作,除了我找不到如何加载与外键相关的bean之外。请允许我解释。

我有两个桌子。成员和供稿。每个“提要”都通过外键(在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。

欢迎您提出意见和想法。

最佳答案

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

关于mysql - 如何在RedBeanPHP中提取与外键相关的bean?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3977804/

10-11 03:35