表格的列
- id
- idea_id
- 问题id
我想做什么
我想验证相同的idea_id和相同的question_id。
例如。
id:1idea_id:1question_id:1
id:2idea_id:1question_id:2
id:3idea_id:2question_id:1
id:4idea_id:1question_id:1←验证错误!!因为存在idea_id=1和question_id=1的记录!
larave管理中的控制器
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new IdeaQuestionAdoption());
$form->select('idea_id', __('Idea id'))
->options(Idea::pluck('body', 'id'))
->rules('required');
$form->select('question_id', __('Question id'))
->options(Question::pluck('title', 'id'))
->rules('required|unique:idea_question_adoptions,idea_id' .
$form->model()->id);
return $form;
}
但是。它不起作用,因为CCD_ 1为Null。
如何在laravel管理中验证多个列的唯一性
我
'required|unique:idea_question_adoptions,idea_id' . $form->model()->id
失败我无法覆盖更新方法。(此功能在更新时不起作用(
public function update($id)
{
$data = IdeaQuestionAdoption::find($id);
$validator = Validator::make($data, [
'question_id' => 'required|unique:idea_question_adoptions,idea_id' . $data->id,
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
return $this->form()->update($data->id);
}
如何在laravel管理中验证多个列的唯一性?
请帮帮我。
我通过重写存储和更新方法进行验证。
/**
* 新規登録時に、question_idとidea_idが両方同じデータがあるとバリデーションをする
*
* @return void
*/
public function store()
{
$data = request()->all();
$validator = Validator::make($data, [
'question_id' => [
'required',
Rule::unique('idea_question_adoptions')->where(function ($query) use ($data) {
return $query->where('question_id', $data['question_id'])
->where('idea_id', $data['idea_id']);
}),
], [
'question_id' => 'そのデータは既に存在しています。',
]
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
return $this->form()->store();
}
/**
* 更新時にquestion_idとidea_idが両方同じデータがあるとバリデーションをする
*
* @param [type] $id
* @return void
*/
public function update($id)
{
$data = request()->all();
$validator = Validator::make($data, [
'question_id' => [
'required',
Rule::unique('idea_question_adoptions')->ignore($id)->where(function ($query) use ($data) {
return $query->where('question_id', $data['question_id'])
->where('idea_id', $data['idea_id']);
}),
], [
'question_id' => 'そのデータは既に存在しています。'
]
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
return $this->form()->update($id);
}