【问题标题】:Check if the value already exists in the database using Laravel使用 Laravel 检查该值是否已存在于数据库中
【发布时间】: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


    【解决方案1】:

    错误消息有点泄露了它。 Validator 期望值和规则是两个单独的数组,每个数组都有表示需要验证的列名的键。你有规则,但没有被检查的值。这将解决您的错误:

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

    【讨论】:

    • 现在在我的模型上试用。再次感谢您的帮助。
    • Bogdan,你能快速查看一下我的控制器,看看我是否正确地抓住了$id 以获得正确的对象吗?我希望我是。如果没有,我可以听取你的一些建议。 :)
    • 这一行 $id = $ip['attributes']['id']; id .
    • findOrFail 方法将返回一个Visitor 模型实例,因此您应该将列值作为属性访问:$id = $ip-&gt;id;。但是您在那里所做的似乎有点多余,因为Visitor::where('ip', '=', $ip)-&gt;firstOrFail() 已经包含Visitor::findOrFail($id); 将返回的内容。所以你只需要这个:pastebin.com/CNHWiVMe 就可以了。
    • 哦,我明白了。我应该这样做。谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多