Orm Redbean:如何获取所拥有Bean的最后一个插入id?
在我的MVP项目(由Nette FW提供支持)中,我使用RedBeanPHP 3.5.1进行ORM 我需要获取最后一个插入元素的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
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