我正在使用Laravel 4在我的数据库中导入一堆csv条目 .
我不能指出一个必须是唯一的列,它是5列的组合,使其独特 . 但是:如何在Laravel中定义这个?
Option 1: schema builder
您可以使用$ table-> unique('email')方法,但这似乎只允许一列,而不是列的组合 .
Option 2: Validation
不太可取,但我可以在插入之前验证模型 . 但是,再次使用'unique:[table]'验证规则时,如果其中一个列值不唯一,则会返回错误,而不是它们的组合 .
谁能告诉我应该怎么做呢?
我错过了什么,但我可以用正确的方向推动:-)
谢谢,
迪特
5 回答
你可以结合:
Laravel中的所有内容都会接受数组,以便通过“多个”来执行您需要的任何操作 .
正如Antonio所提到的,使用Schema Builder的
unique()
方法来定义您的数据模型 .此外,如果要在模型上使用验证,请考虑多个
UNIQUE
索引的自定义Validator
规则:https://github.com/felixkiss/uniquewith-validator你也可以这样做;
$table->unique(["column1", "column2"], 'uq_columns');
这意味着您将拥有所有列(即column1和column2)的唯一列组合
你可以试试这个
我知道这个问题适用于Laravel 4,但我刚刚在搜索中发现了这个问题并找到了Laravel的解决方案> = 5.3
这里是:
当然,迁移可能看起来像
然后要验证这一点,您不需要使用自定义规则,只需要使用高级规则:
当然,您可能希望在此之前验证名称 . 该名称应该是必需的,以便您可以完成以下这样的事情:
我希望它有所帮助 .