2016-03-09 47 views
0

我很困惑如何在laravel中存儲唯一值我想只存儲單個值transaction_id不應該有多個值。請建議。transid應該是laravel中唯一的存儲檢查(value transid應該是單店)

  $payment      = new Payment; 
      $payment->order_id   = Input::get('orderid'); 
      $payment->amount    = (Input::get('base_amount', 0))?Input::get('base_amount'):Input::get('amount'); 
      $payment->transaction_id  = Input::get('transact'); 

      how to check if this $payment->transaction_id already exists should not save more than one 

      i tried 

      $payment = Payment::where('transaction_id', '=', Input::get('transaction_id'))->first(); 
      if ($payment === null) { 
       $payment->save(); 
      } 

回答

0

您可以使用請求驗證:

public function rules() 
{ 
    return [ 
     'transaction_id' => 'unique' 
    ]; 
} 

如果您使用此方法,您應創建新的Request類php artisan make:request MyRequest命令。然後把rules()在創建MyRequest,然後你可以用它iside您的REST風格的控制器內的存儲/更新操作(功能):

public function store(MyRequest $request) 
{ 
    dd($request->all()); 
} 

https://laravel.com/docs/5.2/validation

此外,您還可以在模型中使用驗證:

private $rules = [ 
    'transaction_id' => 'required' 
    ]; 
+0

好的把這個放在哪裏?我的意思是在我的模型中,還有一個問題會產生單個事務條目嗎?我的意思是它應該保存一個transaction_id,而不僅僅是這項工作? – Jimmy

+0

我在哪裏使用公共職能規則() { return''transaction_id'=>'unique' ]; } @Alexey – Jimmy

+0

你應該把它放在你的請求類中,請看我的帖子。它在Laravel 5中工作,但我不確定4.2中是否提供了此功能。 –

相關問題