laravel 4验证唯一忽略和在哪里

时间:2013-09-24 09:14:38

标签: php validation laravel laravel-4 eloquent

在我将它们提交到我的数据库之前,我正在尝试我的值。我的领域需要非常特殊的验证类型,所以我的问题包括两部分。

我的表有3个字段:id,name,parent_id

目前我正在使用这些行来验证我的变量:

protected static $rules = array(
    'name' => 'Required|Min:1|Max:255|unique:table,name'
);

它运作正常......

除此之外,这也会禁用编辑此记录的功能,因为如果我不更改名称则相同... 1)我需要忽略记录的id(这必须是一个变量,而不是一个固定的整数)

在文档中我发现了这个: http://laravel.com/docs/validation#rule-unique

这有效,但它不是变量:

'name' => 'Required|Min:1|Max:255|unique:table,fieldname,1'

在laravel论坛上我发现了这个: http://forums.laravel.io/viewtopic.php?id=1868

所以我试过这个:

'name' => 'Required|Min:1|Max:255|unique:table,fieldname,$input["table_id"]'

'name' => 'Required|Min:1|Max:255|unique:table,fieldname,'.$input["table_id"]

然而这对我不起作用......

2)对于具有相同parent_id的每条记录,名称必须是唯一的,我还想使用变量来做到这一点。根据文档,我应该能够做到这样的事情:

'name' => 'Required|Min:1|Max:255|unique:table,fieldname,'.$input["table_id"] .',parent_id,'.$input["parent_id"]

但这似乎不起作用......

提前致谢。

1 个答案:

答案 0 :(得分:2)

在您使用' protected'的第一个代码中所以,也许你在课堂上验证你的数据

尝试做这样的事情

public static $rules = array(
    //You don't need min:1 rule since you have the required rule
    'name' => 'required|max:255|unique:TABLE_NAME',
    ...
);

public function save(array $options = array()) {
    if (isset($this->attributes['id'])) { //do if you updating data
        static::$rules['name'].=',name,' . $this->attributes['id'];
    }
    return parent::save($options);
}