php – 使用Laravel检查数据库中是否已存在该值

说明:我有一个网站.我只是想跟踪一个可疑的请求,并且只在需要时才可能将它们谷仓.我刚刚开始实现该功能.我有IP地址的所有记录,但我不确定如何每次增加他们的访问次数 – 他们访问.

目标:每次用户访问网站时增加visit_count属性

在我的访问者表中,我有一个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();

}

结果

我一直在

Argument 1 passed to Illuminate\Validation\Factory::make() must be of the type array, string given

我相信,它来自这一行$validator = Visitor :: validator($ip);

最佳答案 错误消息类型给它. Validator期望值和规则是两个独立的数组,每个数组都带有表示需要验证的列名的键.你有规则,但不是被检查的值.这将解决您的错误:

return Validator::make(['ip' => $input], $rules);
点赞