我正在尝试检查三列 unique validation
,employee_id
,designation_id
上的 station_id
,但数据以 array
的形式出现,这使我的情况独特且不同于其他 SO 问题/答案。我已经检查了几个问题,如下所示:checks unique validation on multiple columns
但就我而言,我无法获取值,因为它们位于数组中。我也尝试实现 Custom Rule
或 Request
但徒劳无功。对于所有尝试,我都无法获得 field value
,例如 $request->employee_id
,因为它们在我的案例中位于 array
内。可能是我没有尝试正确。
$this->validate($request, [
'posting.*.employee_id' => 'required,unique: // what to do here ??',
'posting.*.designation_id' => 'required',
'posting.*.station_id' => 'required',
'posting.*.from_date' => 'required|date',
]);
我正在尝试验证 create
和 update
(along with ignore $this->id facility)
的唯一性,但不知道如何实现这里是数组。如果没有array
就没有问题。非常感谢任何帮助/建议/指南。提前致谢。
答案 0 :(得分:0)
你可以通过创建一个规则来做到这一点,即UniquePosting,这样你的控制器代码就会看起来像
$this->validate($request, [
'posting' => ['required'],
'posting.*' => ['required', new UniquePosting()],
'posting.*.employee_id' => 'required',
'posting.*.designation_id' => 'required',
'posting.*.station_id' => 'required',
'posting.*.from_date' => 'required|date',
]);
现在在您的 UniquePosting 规则传递函数中看起来像
public function passes($attribute, $value) {
$exists = Posting::where(['employee_id' => $value['employee_id'], 'designation_id' => $value['designation_id'],'station_id' => $value['station_id')->exists();
return !$exists;
}
如果需要,添加任何更改,总的来说,这是测试整个数组唯一性的概念。