我的数据库中有一个 issue 表。此 issues 表的 issueTitle 列具有唯一的约束。
现在,如果不存在具有相同名称的另一个标题,我想存储另一个标题。 我在laravel中使用了where子句。 它适用于标题如下的情况:
表中的标题字段:“ Hello”,“ Hello”,“ Hello”
表单数据标题:'hello','HELLO','Hello'
但不适用于这些情况:
表中的标题字段:“ Hello World”,“ Hello World?”,
表单数据中的标题:“ hello(多个空格)世界”,“ HELLO WORLD”
我希望你明白了。我只想检查它是否是唯一标题,然后将其存储在表中。
我试图检查标题是否存在相同名称。如果存在,则重定向到错误消息为“问题已存在”的页面。
IssuesController.php
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|max:255',
'category' => 'required|not_in:0',
'body' => 'required',
]);
$issue = new Issue;
$issue->issue_title = Input::get('title');
if (Issue::where('issue_title', $issue->issue_title)->first()) {
return redirect('/dashboard')->with('error', 'Issue already raised!');
}
$issue->issue_body = Input::get('body');
$issue->user_id = Auth::user()->id;
$issue->cat_id = 1;
$issue->save();
return redirect('/dashboard')->with('success', 'Issue raised successfully!');
}
我希望每个标题都唯一存储。
我认为可以做到的是:
删除所有空格
用小写字母整句
从末端删除(?,。,!)之类的标记。
例: 乌托邦粗心大意的警察成为粗心大意的警察
我们也不能第一次将其存储在数据库中,因为很难检索它并显示在另一个视图上。 我认为 最好从数据库中获取标题,以上述形式进行更改,对输入数据进行相同的操作,然后进行比较。