我有一个表单,用户可以在其中将一个项目发布到数据库,同时创建一个新用户,将两者链接在一起。
表中的Usersid和projects.user_id值。但是,我有一个小问题。如果我从users表中获得最后一个id,并将该id加1作为下一个id,那么它就可以工作了。但是,如果用户在添加带有id的新项目之前被删除,那么在应用程序启动时可能会变得非常混乱。
假设我得到了表中最后一个id为5的用户。但是,有人删除了它,第二天我和一个新用户一起做了一个新项目。现在下一个id将是id 6。但根据我的代码,它在projects_table中反映了5,而在users_table中则变成了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的连锁反应,因为他总是有1个差异。我想让这一切变得不可能。
如果您试图获取新创建记录的ID,请尝试:
$user = User::create(['name'=>'Stefano']);
$user->id