laravel 4验证在两列上是唯一的

001*_*221 2 php validation laravel-4

嗨,我正在Laravel中进行一些验证,我想确保字段uid对于project_id是唯一的.例如我的数据库表如下:

id | project_id | uid        |
1  | 3          | task_uid   |
2  | 4          | task_uid2  |
3  | 4          | task_uid   |
Run Code Online (Sandbox Code Playgroud)

uid可以在project_id中存在两次,但如果project_id相同则不能.

我试过以下几点;

public static $rules = array(
    'UID' => 'required|unique:uid,project_id'
);
Run Code Online (Sandbox Code Playgroud)

但是这没有用,并返回以下sql错误;

"SQLSTATE[42S02]: Base table or view not found: 1146 Table 'project.uid' doesn't exist (SQL: select count(*) as aggregate from `uid` where `project_id` = task_uid)"
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以检查任务表,以确保project_id和uid是唯一值?

Gaz*_*dge 5

**请注意:这是Laravel 4**

独特的方式(在laravel 4中):

unique:{tableName},{columnName}
Run Code Online (Sandbox Code Playgroud)

尝试

public static $rules = array(
    'UID' => 'required|unique:{tableName},uid|unique:{tableName},project_id'
);
Run Code Online (Sandbox Code Playgroud)

**请注意:这是为Laravel 4****

  • 我不认为这将工作,因为它不是在寻找组合列的唯一性,而是单独的列唯一性.据我所知,你必须创建一个自定义验证器,它执行查询,查找两列匹配的记录. (12认同)