我在我的 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/