【发布时间】:2016-12-09 20:37:32
【问题描述】:
我有 cmets 表:
我的评论控制器,它从表单中获取值并验证它并将其存储在数据库中。
public function store(Request $request, $product_id)
{
$this->validate($request, array(
'name' => 'required',
'email'=> 'required|email|unique:comments,product_id',
'comment' => 'required',
'rating' => 'required|integer'
));
$product = Product::find($product_id);
$comment = new Comment();
$comment->name = $request->name;
$comment->email = $request->email;
$comment->comment = $request->comment;
$comment->rating = $request->rating;
$comment->product()->associate($product);
$comment->save();
Session::flash('success','Comment was added');
return redirect()->route('product.show',[$product->id]);
}
我正在尝试验证,只有唯一的电子邮件 ID 才能对每个 product_id 发表评论,也就是说,如果用户已经对 product_id 1 发表了评论,则不允许同一用户再次对该 id 发表评论。强>
我试过了
'email'=> 'required|email|unique:comments,product_id'
但正如您所见,为相同的 product_id 输入了相同的电子邮件 ID 数据。
用户可以对 n 个 product_id 页面发表评论,但一旦评论了该 id,便无法再次发表评论。
是否有办法验证是否已在数据库中为特定 product_id 输入电子邮件数据,然后不允许同一电子邮件提交表单。
如果 product_id 不同,则 email 可以输入。
谢谢。
【问题讨论】:
标签: laravel