Cha*_*ynn 5 php validation laravel laravel-5
是否有可能将唯一的验证方法传递给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',
);
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中运行:
$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);
Run Code Online (Sandbox Code Playgroud)
如何在不连接验证规则的情况下获取cause_id?正如您在rules数组中看到的那样,我尝试了PDO样式:占位符,但查询执行如下:
select count(*) as aggregate from donations where circle_id = '500' and cause_id = ':cause_id'
对于您的情况,我的建议是将您的规则包装在一个函数中:
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,
);
}
Run Code Online (Sandbox Code Playgroud)
然后调用您的函数,传入您的值:
$validator = Validator::make($input, Donation::rules($yourCauseId));
Run Code Online (Sandbox Code Playgroud)
我过去遇到过这样的问题,我也想在另一个字段的规则中使用其他字段的值。这往往是解决这个问题的最简单方法。
归档时间: |
|
查看次数: |
3154 次 |
最近记录: |