我有一个表单,用户可以在其中将项目发布到数据库中,也可以使新用户将两者链接在一起。
表中的Usersid和projects.user_id值。但是,我有一个小问题。如果我从用户表中获得了最后一个ID,并使用一个+1作为下一个ID,那么它将起作用。但是,如果在添加ID为ID的新项目之前删除用户,则在应用程序启动时会变得非常困惑。
假设我在表中获得了ID为5的最后一个用户。但是,有人删除了它,第二天我与一个新用户创建了一个新项目。现在,下一个ID将是ID6。但是根据我的代码,它在projects_table中反射(reflect)了5,但在users_table中却反射(reflect)为6。
我想知道是否有人可以向我建议一个我可以使用的具有正确ID的功能?
获取最后一个ID的功能
public static function getLastRow(){
$data = DB::table('users')->select('id')
->orderBy('id', 'desc')
->first();
return $data->id;
}
在验证器之前,我计算将其添加到项目中的最后一个ID
$lastidplus = (int)User::getLastRow() + 1;
在我的验证器中,我有这个:
'user_id' => $lastidplus,
注意::此方法有效,但将来如果要删除用户表中的最后一行。相应项目表中会出现虚假ID的链式 react ,因为他总是有1个差异。我想做到这一点。
最佳答案
如果您尝试获取新创建的记录的ID,请尝试:
$user = User::create(['name'=>'Stefano']);
$user->id