我希望用户输入邮政编码,然后在注册控制器中,我想针对我拥有的邮政编码数据库来验证该邮政编码,因此,如果用户提供的邮政编码在我的数据库中,尽管他/她使用了格式化,它还是会成功我的意思是,无论他/她使用空格还是不使用空格,我都希望验证成功。 我想使用的查询:
$postalcode=$data['postal_code'];
zipcodes::whereRaw('replace(POSTAL_CODE,\' \',\'\')=? ',[str_replace(' ','',$postal_code)
我尝试在验证中使用以下内容:
Rule::exists('zipcodes','POSTAL_CODE')->where(function ($query) use($postalcode) {
// die($postalcode);
$query->whereRaw('replace(POSTAL_CODE,\' \',\'\')=? ',[str_replace(' ','',$postalcode)]);
})
但是它不能满足我的要求,并且似乎已经尝试在执行mysql replace或php str_replace之前查找邮政编码表中是否存在邮政编码。 所以有什么建议吗?
答案 0 :(得分:0)
最简单的方法是使用Laravel的validate()
方法。
https://laravel.com/docs/5.7/validation
您可以使用Exists
验证规则。它将检查您告诉它的数据库,如果记录存在,如果存在,它将显示为有效。
如果需要在验证之前修剪空格,请先执行$request->postal_code = str_replace(' ', '', $request->postal_code);
,然后再调用validate方法。
这是一个完整的示例:
$request->postal_code = str_replace(' ', '', $request->postal_code);
$request->validate([
'postal_code' => 'required|exists:zipcodes',
]);