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"]

但这似乎不起作用...

提前致谢。

4

1 回答 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);
}
于 2013-09-25T12:50:47.970 回答