说明:我有一个网站。我只是想跟踪一个可疑的请求,并且只在需要时才可能将它们谷仓。我刚刚开始实现该功能。我有IP地址的所有记录,但我不确定如何每次增加他们的访问次数 - 他们访问。
目标:每次用户访问网站时增加visit_count
属性
在我的visitors
表格中,我有一个ip
属性
我想先查看现有的,我执行保存和其他逻辑,但我只是有点卡在这里。
如何使用Laravel检查数据库中是否已存在该值?
对此的任何提示都将非常感谢!
我已经尝试了
型号:Visitor.php
class Visitor extends Model {
protected $table = 'visitors';
//Validation Rules and Validator Function
public static function validator($input, $id = ''){
$rules = array(
'ip' =>'unique:visitors,ip,'.$id,
);
return Validator::make($input,$rules);
}
}
控制器:Visitor.php
// Check for existing
$validator = Visitor::validator($ip);
if ($validator->fails()) {
$ip = Visitor::where('ip', '=', $ip)->firstOrFail();
$id = $ip['attributes']['id']; //<------ Not sure if this is a proper way
if($ip){
$visitor = Visitor::findOrFail($id);
$visitor->visit_count = $visitor->visit_count + 1 ;
$visitor->save();
}
} else {
$visitor = new Visitor;
$visitor->ip = $ip;
$visitor->visit_count = $visitor->visit_count + 1 ;
$visitor->save();
}
结果
我一直在
传递给Illuminate \ Validation \ Factory :: make()的参数1必须是数组类型,给定字符串
我相信,这一行来自$validator = Visitor::validator($ip);
答案 0 :(得分:2)
错误消息类型将其丢弃。 Validator期望值和规则是两个独立的数组,每个数组都带有表示需要验证的列名的键。你有规则,但不是被检查的值。这将解决您的错误:
return Validator::make(['ip' => $input], $rules);