Laravel 4:使值/列的组合独特

Die*_*ter 33 laravel laravel-4

我正在使用Laravel 4在我的数据库中导入一堆csv条目.

我不能指出一个必须是唯一的列,它是5列的组合,使其独特.但是:如何在Laravel中定义这个?

选项1:模式构建器
您可以使用$ table-> unique('email')方法,但这似乎只允许一列,而不是列的组合.

选项2:验证
不太可取,但我可以在插入之前验证模型.但是,再次使用"unique:[table]"验证规则,当其中一个列值不唯一时,它将返回错误,而不是它们的组合.

谁能告诉我应该怎么做呢?
我确定我错过了一些东西,但我可以用正确的方向推动:-)

谢谢,

迪特

Ant*_*iro 79

你可以结合:

$table->unique( array('email','name') );
Run Code Online (Sandbox Code Playgroud)

Laravel中的所有内容都会接受数组,以便通过"多个"来执行您需要的任何操作.

  • 但是如何验证复合唯一键,我的意思是第二部分使用laravel验证.我无法理解laravel网站上的例子? (8认同)

Fel*_*lix 8

unique()正如Antonio所提到的,使用Schema Builder的方法来定义您的数据模型.

此外,如果要在模型上使用验证,请考虑我Validator的多个UNIQUE索引的自定义规则:https://github.com/felixkiss/uniquewith-validator


小智 7

你也可以这样做;

$table->unique(["column1", "column2"], 'uq_columns');

这意味着您将拥有所有列的唯一列组合,即 column1 和 column2

  • @GaryPaluk,你错了。这个答案是关于“独特的组合”,最后一个参数是一个索引名称。 (2认同)