【发布时间】:2020-03-11 05:45:03
【问题描述】:
我想在请求验证中验证用户是否与订单相关联。
订单迁移:
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id')->nullable();
...
$table->timestamps();
$table->softDeletes();
用户表:
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
我手动创建了一个函数来检查订单是否与用户关联
public function checkIfOrderIsAssociatedWithTheUser(Request $request){
$checkExistsStatus = Order::where('id',$request->order_id)->where('user_id', $request->user_id)->exists();
return $checkExistsStatus;
}
当我需要检查关联时,我必须像这样调用这个函数:
$this->validate($request, [
'order_id' => 'required|exists:orders,id',
'user_id' => 'required|exists:users,id'
]);
$checkExistsStatus = $this->checkIfOrderIsAssociatedWithTheUser($request);
if(!$checkExistsStatus){
return redirect()->back()->withErrors([
'Order and user is not linked'
]);
}else{
...
}
我尝试创建一个新规则:CheckAssociationBetweenOrderAndUser,但我无法将 user_id 传递给它。
$this->validate($request, [
//unable to pass user_id
'order_id' => ['required', new CheckAssociationBetweenOrderAndUser()]
]);
有没有更好的方法通过创建自定义新规则来验证关联检查?或者这是检查关联的唯一方法?
【问题讨论】:
标签: php laravel laravel-5 laravel-5.7 laravel-validation