首页 文章

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

提问于
浏览
0

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

我的表有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 回答

  • 2

    在第一个代码中,您使用了“受保护”字,因此您可能正在验证数据的类中

    尝试做这样的事情

    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);
    }
    

相关问题