2016-05-31 2 views
0

Я делаю электронной коммерции, я создал:Laravel 5.1 - Проверка, если дата истек

-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. Если Скидочный код существует в моей БД и не истек, мне нужно создать новую переменную со значением цены купона, например «$ discount = Coupon-> price», поэтому я могу передать свою скидку на мой чек.

Как я могу это сделать?

Благодарим вас за помощь! (Я читал что-то об углероде, но я не undestand отлично)

ответ

1

Если $coupon->expire_date не экземпляр Carbon уже, сделать его (new Carbon($coupon->expire_date), а затем просто сравнить эти два объекта, как если бы они были номера.

Например (при условии, что $coupon->expire_date является экземпляром Carbon:.

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

углерода очень удобно для всех видов сравнений, вычисления различий и т.д. Here вы можете найти кучу примеров

+0

Мне нужно установить уголь раньше? Мне нужно вставить в моего композитора? или я могу вставить класс углерода без установки ничего? Спасибо за помощь! –

+0

У вас уже есть углерод, он поставляется с laravel, и вы используете его уже, как вы его использовали для переменной '$ mytime' –

3

Используйте date mutators, чтобы сделать expire_date полем экземпляр Carbon автоматически.

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

Я пытаюсь, но я получаю сообщение об ошибке: InvalidArgumentException в Carbon.php line 425: Неожиданные данные найдены. Неожиданные данные найдены. Нет данных –

+0

Возможно, класс углерода неправильный? –

+0

Я не знаю, в моих проектах работают мутаторы –

Смежные вопросы