【问题标题】:How do you pull beans related by foreign keys in RedBeanPHP?如何在 RedBeanPHP 中拉取外键相关的 bean?
【发布时间】:2010-10-20 12:33:56
【问题描述】:

我将 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。

欢迎您的意见和想法。

【问题讨论】:

    标签: mysql orm php-5.3


    【解决方案1】:

    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
    

    【讨论】:

    • 好像不行,var_dump($feed->getMember()->name);导致一个空值...
    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多