是否可以通过带有变量的额外 where 子句传递唯一验证方法?
举个例子:
在我的模型中,我有自己的验证规则。
public static $rules = array(
'amount' => 'required|numeric',
'user_id' => 'required|exists:users,id',
'cause_id' => 'required|exists:causes,id',
'circle_id' => 'required|unique:donations,circle_id,NULL,id,cause_id,:cause_id',
);
然后在我的 Controller 中运行:
$input = array(
'amount' => Input::get('amount'),
'user_id' => $this->currentUser->id,
'cause_id' => $cause->id,
'circle_id' => Input::get('circle_id')
);
$validator = Validator::make($input, Donation::$rules);
如何在不连接的情况下获取验证规则中的 cause_id?正如您通过规则数组所见,我尝试了 PDO 样式:占位符,但查询执行为:
从 circle_id = '500' 和 cause_id = ':cause_id' 的捐赠中选择 count(*) 作为聚合
最佳答案
我对你的情况的建议是将你的规则包装在一个函数中:
public static function rules($causeId)
{
return array(
'amount' => 'required|numeric',
'user_id' => 'required|exists:users,id',
'cause_id' => 'required|exists:causes,id',
'circle_id' => 'required|unique:donations,circle_id,NULL,id,cause_id,' . $causeId,
);
}
然后调用你的函数,传入你的值:
$validator = Validator::make($input, Donation::rules($yourCauseId));
我过去遇到过这样的问题,我也想在另一个字段的规则中使用其他字段的值。这往往是解决问题的最简单方法。
关于php - Laravel 5 验证唯一传递变量占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696772/