我只需要显示当天为特定用户,用户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的今天发布的所有帖子,但没有任何反应。这显示了我曾经创建的所有帖子,我只需要今天或那天创建的帖子被创建。有什么建议吗?
答案 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);