просмотреть данные базы данных, созданные сегодня конкретным пользователем - PullRequest
0 голосов
/ 27 апреля 2018

Я создаю foodlog и хочу, чтобы пользователь мог выполнять поиск по дням и просматривать продукты, которые были зарегистрированы только в тот день.
Например, на странице для сегодняшней даты я хочу видеть только те продукты, которые я зарегистрировал за сегодня.

У меня есть таблица, получающая все данные от этого конкретного пользователя со всех дат, но как мне сузить ее до сегодняшнего дня?

FoodlogController.php

public function show() {

    $userId = Auth::user()->id;

    $posts = Post::where('user_id', $userId)->get();


    return view('foodlog', compact('posts'));

}

Вот так выглядит мой стол

enter image description here

1 Ответ

0 голосов
/ 27 апреля 2018

Я предполагаю, что у вас есть временные метки по умолчанию, которые добавляют поля created_at и updated_at. Если это не так, и вы записываете время создания в другой столбец, просто замените created_at на него.

Laravel поставляется с ручным пакетом для работы с датами - Углерод , который можно использовать, импортировав его из Carbon\Carbon пространства имен.

И в построителе запросов Laravel есть метод whereDate (выделите "whereDate"), который может использоваться именно для этого.

Комбинируя эти 2, вы можете сделать это:

$posts = Post::where('user_id', $userId)->whereDate('created_at', \Carbon\Carbon::today())->get();

Это получит сообщения, которые были созданы сегодня.

Однако

Я настоятельно рекомендую вам создать hasMany отношение (пользователь hasMany сообщений и обратно сообщение belongsTo пользователь), которое позволит использовать отношения и делать что-то вроде этого:

$posts = $user->posts()->whereDate('created_at', \Carbon\Carbon::today())->get();

И многое другое, путь Ларавела.

...