【问题标题】:Laravel how to compare dates in controllerLaravel如何比较控制器中的日期
【发布时间】:2022-02-15 11:22:10
【问题描述】:

我正在尝试比较日期以获取执行附加和分离的下一个事件,这是我的代码:

在控制器中:

public function subscribe(Request $request)
    {   
        $actualDate =  date('Y-m-d');
        $event_id = $request->route('id');
        $event = Event::find($event_id);
        $event_date = $event->event_date;
        
        $user = Auth::user();
        
        if ($user->events($event_id)->count() == 1 && $user->events($event_date) >= $actualDate){
            $user->events()->attach($event_id);
            return redirect('/');
        }else if($user->events($event_id)->count() != 0){
            $user->events()->detach($event_id);
            return redirect('/home');
        }
    }

【问题讨论】:

  • 发生错误了吗?你期待什么?
  • $user->events($event_date) 很可能不起作用,因为events() 是一种关系。您不能将日期传递给它。我不确定你想用这个来完成什么。
  • 是的,我同意你的看法@aynber。应该是$event_date >= $actualDate
  • 我想比较事件的日期和实际日期以进行附加,因为如果它是过去的事件,我当然不能附加它,对于项目。
  • 好吧,那就忽略$user->events($event_date)吧。你可以使用 Laravel 的casters to cast event_date as a date,这样你就可以使用Carbon functions,比如isPast()

标签: php laravel date controller


【解决方案1】:

在模型中尝试将其作为日期属性访问,或者您可以使用访问器。

 protected $dates = ['event_date'];

然后在函数中。

public function subscribe(Request $request)
    {   
        $actualDate =  Carbon::createFromFormat('m/d/Y H:i:s', '12/01/2020 11:20:00');
        $event_id = $request->route('id');
        $event = Event::find($event_id);
        $event_date = $event->event_date;
        
        $user = Auth::user();
        
        if ($user->events($event_id)->count() == 1 && $user->events($event_date)->gte($actualDate)){
            $user->events()->attach($event_id);
            return redirect('/');
        }else if($user->events($event_id)->count() != 0){
            $user->events()->detach($event_id);
            return redirect('/home');
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 2013-02-09
    • 2011-02-05
    • 2016-08-09
    • 2016-02-21
    • 2022-01-02
    相关资源
    最近更新 更多