唯一记录,但仅适用于Laravel 5.5中的给定父级

时间:2018-02-22 11:28:34

标签: validation laravel-5

我有2个数据库模型,都有一个URL字段,因此您可以访问它们。在前端,我会做这样的事情来访问它:

/{{ $parent->url }}/{{ $child->url }}

验证父URL很简单,我只是确保它对于该表是必需的和唯一的。但孩子有点慌张。我需要URL是唯一的,但前提是记录共享同一个父级。目前,我创建新记录的验证规则是:

'url' => 'required|alpha_dash|unique:child_table,url',

并更新:

'url' => 'required|alpha_dash|unique:child_table,url,' . $id,

但这意味着每个网址必须是唯一的,我宁愿不执行该规则。我知道父记录ID,所以有没有办法说URL必须是唯一的,但仅限于具有此父ID的记录?

绝对清楚,这是不允许的:

/parent1/child1
/parent1/child1

但这是:

/parent1/child1
/parent2/child1

2 个答案:

答案 0 :(得分:2)

这样的事情可以帮助你实现这一目标:

.has-subsegments

答案 1 :(得分:0)

如果有人需要,它最终会变得更加复杂:

'url' => ['required', 'alpha_dash', Rule::unique('child_table', 'url')->where(function($query) use ($parentId) {
    return $query->where('parentId', '=', $parentId);
})],