首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免存储在用户提交的MySQL数据库中的重复内容

如何避免存储在用户提交的MySQL数据库中的重复内容
EN

Stack Overflow用户
提问于 2016-03-22 23:09:30
回答 12查看 756关注 0票数 4

我正在创建一个网站,让用户列出多达5家公司,他们是相关的。当其他用户搜索这些公司时,所有与该公司相关的用户都会出现在搜索结果中。

公司将由用户通过文本输入字段提交。

如何避免用户提交重复的公司?例如,如果UserA提交了一个名为堆栈溢出的公司,那么UserB也会提交堆栈溢出,那么我的数据库中就会有2个堆栈溢出。

我有三张桌子:

用户表

id/用户名/电子邮件

公司表

id=公司名称

UsersCompany表

id_。

我用的是Laravel 5

EN

回答 12

Stack Overflow用户

发布于 2016-03-23 01:51:41

您应该真正使用Laravel验证和关键字unique来处理这个问题:

代码语言:javascript
复制
$this->validate($request, [
        'company' => 'required|unique:company|max:255'
]);

此外,您还可以使用自定义请求类来处理表单验证

代码语言:javascript
复制
public function rules()
{
    return [
        'company' => 'required|unique|max:255'
    ];
}

如果我是你,我会用第二个。

票数 4
EN

Stack Overflow用户

发布于 2016-05-27 10:57:59

你只要简单地检查一下就可以了。如果公司不存在,则创建新公司或将公司附加到用户。

我想,这些公司是在一个单一的文本输入,分开的逗号,你已经建立了你的关系正确。如果不检查,请检查

示例:

代码语言:javascript
复制
// Inside your controller
public function post_something(Request $request)
{

    // Always good to validate
    $this->validate(....);

    // Somehow get your user model
    $user = ....

    // Get companies input and loop
    $company_names = $request->input('company_names');

    $company_names = explode(',', $company_names );

    foreach ($company_names as $company_name)
    {
        $company = Company::firstOrCreate(['company_name' => $company_name]);

        $user->companies()->attach($company);        
    }

    // Your other stuff
    //
    ....

}
票数 4
EN

Stack Overflow用户

发布于 2016-05-25 06:41:12

这可以通过在company_Name上创建主键或惟一键来实现。

代码语言:javascript
复制
  ALTER TABLE company_Table ADD PRIMARY KEY(company_Name)

  ALTER TABLE company_Table ADD UNIQUE (company_Name)

代码语言:javascript
复制
    IF NOT EXISTS(QUERY) Then INSERT

代码语言:javascript
复制
 Create BEFORE INSERT trigger .
代码语言:javascript
复制
http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36166925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档