首页 > 解决方案 > 在 Laravel 中使用 Unique

问题描述

我正在用 Laravel 构建一个图书门户。我有一个关于书名的唯一验证规则。

    $request->validate([
        'name' => 'required|unique:books',
        'about' => 'required',
        'dsecription' => 'required',
        'image' => 'required|mimes:jpeg,bmp,jpg,png|between:1, 6000',
        'author_id' => 'required',
        'publisher' => 'required',
        'recommended' => 'required',
        'epub_url' => 'required',
        'year'=> 'required',
        'pages' => 'required',
    ]);

我发现作者可以有相同的书名。使用唯一的名称,将不允许我上传。

我在想,如果有办法,我可以检查作者和书名,即

检查作者是否具有相同的姓名,然后在姓名上传时应用唯一规则。

标签: laravel

解决方案


我没有找到任何解决方案。这就是为什么我像这样进行自己的自定义验证:

$request->validate([
   'name' => 'required|unique:books',
   'author_id' => 'required',
  // ...
]);

$data = Book::where('author_id', $request->author_id)->where('name', $request->name)->first();

if(!empty($data)) {
   return redirect()->back()->withErrors('This name already taken'); // error message
}

推荐阅读