Orm Redbean:如何获取所拥有Bean的最后一个插入id?

Orm Redbean:如何获取所拥有Bean的最后一个插入id?,orm,redbean,Orm,Redbean,在我的MVP项目(由Nette FW提供支持)中,我使用RedBeanPHP 3.5.1进行ORM 我需要获取最后一个插入元素的ID,该元素由另一个表中的元素拥有。下面您可以找到表示我刚才描述的功能的方法: public function createSite($userId, $siteName, $feedUrl, $reloadTime, $reloadRate){ $site = R::dispense('site'); $site->user_id = $user

在我的MVP项目(由Nette FW提供支持)中,我使用RedBeanPHP 3.5.1进行ORM

我需要获取最后一个插入元素的ID,该元素由另一个表中的元素拥有。下面您可以找到表示我刚才描述的功能的方法:

public function createSite($userId, $siteName, $feedUrl, $reloadTime, $reloadRate){
    $site = R::dispense('site');
    $site->user_id = $userId;
    $site->name = $siteName;
    $site->feed = $feedUrl;
    $site->reload_time = $reloadTime;
    $site->reload_rate = $reloadRate;

    $user = R::load('user', $userId);
    $user->ownSite[] = $site;
    $id = R::store($user);

    return $id; 
}
现在我假设这条线

$id = R::store($user);
站点ID存储到
$ID
变量中,因为它由现有用户拥有。相反,它用我不再使用的用户ID填充变量

因此,我的问题是:如何获取通过调用父(刚加载的)bean上的
R::store()
方法创建的所属bean的最后一个插入ID?
在RedBean中是否有此实现,或者我必须手动执行此操作

我浏览了RedBeanPHP项目网站的每一个角落,但到目前为止没有任何进展


谢谢你们的建议,伙计们。

运用常识,我终于想出了如何优雅地解决这个问题,既然到目前为止还没有人回答我的问题,就让我自己来解决吧

由于
R::store($user)
能够同时存储
$user
$site
,因此不需要手动存储
$site
对象

但若您需要获取所拥有bean的最后一个插入id,那个么这样做并没有什么害处。通过存储
$site
对象
框架将执行完全相同的操作,除此之外,还返回重新调整大小的id

因此,正确的方法实现如下所示:

public function createSite($userId, $siteName, $feedUrl, $reloadTime, $reloadRate){
    $site = R::dispense('site');
    $site->user_id = $userId;
    $site->name = $siteName;
    $site->feed = $feedUrl;
    $site->reload_time = $reloadTime;
    $site->reload_rate = $reloadRate;

    $user = R::load('user', $userId);
    $user->ownSite[] = $site;

    $id = R::store($site);
    R::store($user);

    return $id;
}

总之,向RedbeanHP致敬ORM FW,我真诚地希望这能帮助将来有类似问题的人。

有一个函数叫做R::findLast(“…”)


不确定7年前这是否是正确答案,但至少现在没有必要做任何额外的工作:

$shop = R::dispense( 'shop' );
$shop->name = 'Antiques';
$vase = R::dispense( 'product' );
$vase->price = 25;
$shop->ownProductList[] = $vase
R::store( $shop );
echo $vase->$id; // <-- yes, id which was created by database is present here
$shop=R::分发('shop');
$shop->name=‘古董’;
$vase=R::分发(‘产品’);
$vase->价格=25;
$shop->ownProductList[]=$vase
R:商店($shop);

echo$vase->$id;//虽然这段代码可以解决这个问题,但它确实有助于提高您的帖子质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因
$shop = R::dispense( 'shop' );
$shop->name = 'Antiques';
$vase = R::dispense( 'product' );
$vase->price = 25;
$shop->ownProductList[] = $vase
R::store( $shop );
echo $vase->$id; // <-- yes, id which was created by database is present here