Laravel-仅显示今天使用Carbon制作的帖子

时间:2019-08-11 18:02:40

标签: php laravel admin

我只需要显示当天为特定用户,用户ID创建的帖子。我正在使用Laravel Carbon,但没有任何反应,我不知道问题出在哪里。这是我的代码

这是我的OptikaController,有两个用户和Carbon

class OptikaController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth:admin');
        $this->middleware('role:super', ['only'=>'show']);
    }


    public function delta(){
        $date = new Carbon(request('date'));

        $posts = Post::where('user_id', Auth::id(1))
                ->whereDate('created_at','=',$date)
                ->orderBy('created_at', 'DESC')
                ->paginate(30); //add {{ $posts->links() }} if paginate is enabled
        $user_id = auth()->user()->id;
        $user = User::find(1);
        return view('delta', compact('date', $date))->with('posts', $user->posts);
    }

    public function centar(){
        $user_id = auth()->user()->id;
        $user = User::find(2);
        return view('centar')->with('posts', $user->posts);
    }
}

因此,我添加了Post::where('user_id', Auth::id(1))$user = User::find(1);来查看该用户ID为1的今天发布的所有帖子,但没有任何反应。这显示了我曾经创建的所有帖子,我只需要今天或那天创建的帖子被创建。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您的代码似乎工作正常。但是,您应该返回$posts而不是$user->posts,返回行应如下所示。

return view('delta', compact('date', $date))->with('posts', $posts);

此外,您可以安全地删除这些行,除非需要将用户转移到视图中。

$user_id = auth()->user()->id;
$user = User::find(1);

因此您的代码应如下所示:

$date = Carbon::parse(request('date'));

$posts = Post::where('user_id', User::find(1)->id)
    ->whereDate('created_at', '=', $date)
    ->orderBy('created_at', 'DESC')
    ->paginate(30);

return view('delta')->with('date', $date)->with('posts', $posts);