Laravel - carbon addDays()

q43xntqr  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(132)

为什么当我添加$date->addDays(5)时,刀片上没有显示任何内容?这是我的控制器:

use Carbon\Carbon;
...
public function index(){

   $date = Carbon::now();
   $date->addDays(5);
   $date->format("Y-m-d");
   $posts = Post::where('status','=', 1)->whereDate('created_at','=', $date)->get();
   return view('home', compact('date', $date))->with('posts', $posts);
}
...

这是我的home.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">All posts
                    <a href="/posts/create" class="btn btn-primary" style="margin-left: 70%">New post +</a></div>
                <hr>
                <div class="card-body">
                    @foreach($posts as $post)
                        @if($post->status == 1)
                            <small style="color:red">PREMIUM POST</small>
                            <hr>
                        @endif
                        <h2>{{$post->name}}</h2><br>
                        <medium>{{$post->body}}</medium>
                        <hr style="border: 1.5px solid grey">
                    @endforeach
                    <small><?php echo now() ?></small>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

这个问题的解决方案是什么?在我添加$date->addDays(5);后,它没有在我的刀片中显示任何内容?
编辑:我只需要我的职位是可见的5天后,没有。这就是全部,也许错误是与addDays();,因为如果我删除它,我的刀片现在显示我的职位,但只有今天。

ufj5ltwl

ufj5ltwl1#

created_at是由current_timestamp创建的,如果你使用addDays(5)将从功能中获取帖子。这不可能
老实说,你可以添加一个名为expired_date的字段,与这个字段比较会很容易。
使用laravel迁移添加一个字段,例如

$table->date('expired_date');

一旦你创建了文章,你需要用Carbon::now()->addDays(5)设置expired_date;
并筛选大于今天的过期日期。

public function index(){

   $date = Carbon::now();
   $date->addDays(5);
   $posts = Post::where('status','=', 1)->whereDate('created_at','>=', $date)->get();
   return view('home', compact('date', $date))->with('posts', $posts);
}

如果你的status字段只是为了区分过期或未过期,我想你不需要这个字段。
但是,如果您确实需要此字段来维护过期状态。
你需要每天更新它,尝试使用Task Scheduling

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            Post::where('expired_date', '<=', \Carbon\Carbon::today())->update(['status' => 0]);
        })->daily();
    }
mf98qq94

mf98qq942#

您可以添加自定义日期格式

$date = Carbon::createFromFormat('Y.m.d', $premiumDate);
$daysAdd = 2;
$date = $date->addDays($daysAdd);
dd($date);
oalqel3c

oalqel3c3#

$date= Carbon::now()->addDays(5);
$posts = Post::where('status','=', 1)->whereDate('created_at','=', $date)->get();
   
return view('home', compact('date', $date))->with('posts', $posts);

相关问题