Avatar ·

在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检查。