orm - Redbean:如何获得拥有的 Bean 的最后插入 id?

标签 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 = $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 填充变量。

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

我浏览了 RedBeanPHP 项目网站的每个角落,但到目前为止还没有运气。

感谢您提供可能的建议,伙计们。

最佳答案

使用常识,我终于想出了如何优雅地解决这个问题,因为到目前为止没有人回答我的问题,让我自己做吧。

R::store($user)能够同时存储 $user$site ,有误导性 无需存储 $site手动对象。

但是,如果您需要获取拥有的 bean 的最后插入的 id,那么这样做确实没有坏处。来自 收纳$site对象 框架将做完全相同的事情,而且最重要的是 它返回resired 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;
}

所以总而言之,向 RedBeanPHP 致敬 ORM FW 和我真诚地希望这可以帮助将来遇到类似问题的人。

关于orm - Redbean:如何获得拥有的 Bean 的最后插入 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955902/

相关文章:

php - 在 SELECT 语句中插入变量

php - 如何通过redbeanphp从数据库中选择创建列别名?

java - osgi 的好 orm

php - RedBeanPHP 和用户输入数据清理

sql - 将 ORM 与存储过程一起使用,矛盾吗?

基于变量名的Python类声明式自动设置名称

security - Silex/Symfony2 记住我身份验证用户界面 RedBean 包装器

php - redbeanphp 和表前缀

java - ORM - 将 hibernate 与内存数据混合

.net - 学习NHibernate