2015-10-10 107 views
4

說明:我有一個網站。我只想跟蹤一個可疑的請求,並且只在需要時纔可能對它們進行倉庫管理。我剛開始實現該功能。我擁有所有IP地址記錄,但我不確定如何每次增加訪問次數 - 他們訪問。檢查數據庫中是否已經存在使用Laravel的值


目標:要增加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(); 

} 

結果

我不斷收到

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

我相信,它從這裏$validator = Visitor::validator($ip);

回答

2

此行中的錯誤信息那種給它了。 Validator期望值和規則是兩個單獨的數組,每個數組都帶有表示需要驗證的列名稱的鍵。你對規則有這樣的要求,但對於被檢查的值不適用。這將修復您的錯誤:

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

現在在我的模型上試用它。再次感謝您的幫助。 – ihue

+0

它的作品優雅。令人敬畏的工作! @Bogdan。 – ihue

+0

很酷。樂意效勞。 – Bogdan

相關問題