【发布时间】:2015-10-10 14:56:08
【问题描述】:
说明:我有一个网站。我只想跟踪可疑请求,并仅在需要时才可能将它们存储起来。我刚刚开始实现该功能。我有所有 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);
【问题讨论】:
标签: php laravel laravel-5 eloquent