2010-10-20 72 views
1

我正在将Zend和Mysql的RedBean PHP ORM 1.2用于新项目。我仍然在学习它,它在很多情况下都能很好地工作,除了我找不到如何加载外键相关的bean。请允许我解释一下。如何通过RedBeanPHP中的外键拉相关的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在App水平。

欢迎您提出宝贵的意见和想法。

回答

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 
+0

它似乎没有工作,后续代码var_dump($馈> getMember() - >名);导致一个空值... – jonnnnnnnnnie 2010-12-09 21:19:44

相关问题