在Laravel中检查记录是否存在:正确方法与常见错误
大家好!我是Laravel和PHP的新手,正在写我的第一个项目——一个简单的博客。我有一个Post模型和posts表。在添加新帖子之前,我需要检查是否已存在相同标题(slug)的记录。我尝试了几种方法,但感觉做得不对。
以下是我控制器中的当前代码:
public function store(Request $request)
{
$slug = $request->input('slug');
$existing = DB::table('posts')->where('slug', $slug)->get();
if (count($existing) > 0) {
return back()->with('error', '该slug已存在');
}
// ... 保存
}
但我了解到,使用count()和get()来做这个检查效率不高,尤其是当表很大时。我还看到有人使用first()、exists()或doesntExist()。另外还有find()方法用于按ID检查。