2016-05-31 20 views
0

日が期限切れかどうかのチェック、私が作成した:Laravel 5.1 - 私はeコマースをやっている

-Session "cart" with all products attributes (price, id, quantity, category etc)

-CouponController.php

namespace dixard\Http\Controllers; 

use Illuminate\Http\Request; 

use dixard\Http\Requests; 
use dixard\Http\Controllers\Controller; 

use dixard\Coupon; 
use dixard\Http\Controllers\Carbon\Carbon; 

class CouponController extends Controller 

public function postCoupon(Request $request) 
     { 

      $cart = \Session::get('cart'); 

      $mytime = Carbon\Carbon::now(); // today 

      // i check if code coupon exist into my DB 

      $coupon = Coupon::where('code', $request->get('coupon'))->first(); 

      if (!empty($coupon) && $coupon->expire_date) { 


       // i need check IF coupon exist AND date not expired --> i will put a new price into my session cart products. 

      } 

     } 

Model Coupon.php

protected $table = 'coupons'; 

    protected $fillable = [ 

    'code', // code of coupon 
    'price', // price discount 
    'expire_date', // expire date of coupon 

    ]; 

私の質問

私が希望 :

  1. チェック私CouponControllerと有効期限が切れた場合は、コードのクーポンが
  2. 期限切れのかそうでない場合、戻り単にメッセージ「クーポン無効」
  3. クーポンコードは私のDBに存在し、有効期限が切れていない場合、私は、クーポンの価格値で新しい変数を作成する必要がありますたとえば "$ discount = Coupon-> price"のように、私のチェックアウトビューに割引価格を渡すことができます。

どうすればいいですか?

ありがとうございました! $coupon->expire_dateはすでにCarbonのインスタンスでない場合は(私は、炭素について何かを読んで、私は細かいundestandいけない)

答えて

1

、(例えば、それは(new Carbon($coupon->expire_date)、彼らは数字であるかのように、単にこれら2つのオブジェクトを比較する。

作ります$coupon->expire_dateCarbonのインスタンスであると仮定すると:。

if ($coupon->expire_date >= $my_time) { 
    // ok 
} else { 
    // error, coupon expired 
} 

カーボンを使用すると、例の負荷を見つけることができますHere違いなどを計算し、比較のすべての種類のために非常に便利です

+0

私はカーボンを前もってインストールする必要がありますか?私は私の作曲家に挿入する必要がありますか?または私は何もインストールせずにクラスの炭素を挿入することができますか?ご協力ありがとうございました! –

+0

あなたはすでに炭素を持っています。それはlaravelに付属しています。あなたは '$ mytime'変数のように既に使用しています。 –

3

expire_dateフィールドにCarbonインスタンスを自動的に作成するには、date mutatorsを使用します。

class Coupon extends Model 
{ 
    /** 
    * The attributes that should be mutated to dates. 
    * 
    * @var array 
    */ 
    protected $dates = ['expire_date']; 
} 

それ以降は、クーポンの有効期限が未来の日付であるかどうかを確認するだけで済みます。

if (!empty($coupon) && $coupon->expire_date->isFuture()) { 
    // valid coupon 
} 
else{ 
    return redirect()->back()->withErrors(['coupon' => 'Coupon is not valid']); 
} 
+0

私は試していますがエラーが出ます:Carbon.php行のInvalidArgumentException 425: 予期しないデータが見つかりました。 予期しないデータが見つかりました。 データがありません –

+0

多分炭素クラスが間違っていますか? –

+0

私のプロジェクトのミューテータの仕事ではわからない –

関連する問題