在 Laravel Eloquent 中查询只有日期的日期时间字段

在我的表中,我有一个格式为 Y/m/d H:m:s(例如:2019/07/31 09:10:50)的日期时间列。


在我的刀片视图中,我有一个日期选择器来选择格式为 Y/m/d 的日期。


现在我想用那个日期选择器变量查询选择数据。(例如:我选择 2019/7/31,它将从 2019/7/31 00:00:00 到 2019/7/31 23:59:59 中选择)。


这是我雄辩的查询:


public function getFilterUserActivity($filterFrom, $filterTo)

{

    return $this->select(

                        'user.fullname',

                        'user.email',

                        "{$this->table}.id",

                        "{$this->table}.user_id",

                        "{$this->table}.name",

                        "{$this->table}.distance",

                        "{$this->table}.moving_time",

                        "{$this->table}.pace",

                        "{$this->table}.type",

                        "{$this->table}.start_date_local",

                        "{$this->table}.max_speed",

                        "{$this->table}.average_speed",

                        "{$this->table}.is_valid",

                        "{$this->table}.invalid_description"

                        )

                ->join('user', 'user.id', '=', "{$this->table}.user_id")

                ->join('department', 'department.id', '=', 'user.department_id')

                ->where("{$this->table}.max_speed", '>=', 7)

                ->whereBetween("{$this->table}.created_at",[$filterFrom, $filterTo])

                ->paginate(15);

这是我的日期变量请求:


$filter = $request->input('date-filter'); //2019/7/31

我想我应该将这个 $filter 变量转换为两个变量,即 $filterFrom = 2019/7/31 00:00:00 和 $filterTo = 2019/7/31 23:59:59 并传递给查询函数。


是否可以?


你能帮助我吗?


幕布斯7119047
浏览 233回答 3
3回答

当年话下

你可以用这个...$date = DateTime::createFromFormat($format, '2009-02-15');echo "Format: $format; " . $date->format('Y/m/d H:i:s') . "\n";你可以设置一天后的时间$date = DateTime::createFromFormat($format, '2009-02-15');echo "Format: $filterFrom; " . $date->format('Y/m/d 00:00:00') . "\n";echo "Format:   $filterTo; " . $date->format('Y/m/d 23:59:59') . "\n";

慕少森

在本机 php 代码中,你可以这样做$radical = $request->input('date-filter')$filterFrom = date_create_from_format("Y/m/d H:m:i",strtotime("$radical 00:00:00"))->getTimestamp(); $filterTo = date_create_from_format("Y/m/d H:m:i",strtotime("$radical 23:59:59"))->getTimestamp();

江户川乱折腾

您可以使用laravel 中的Carbon包来确定一天的开始和结束。查看文档以获取有关该包的更多信息。我认为这将解决您的问题,因为我们将使用 startOfDay 和 endOfDay 获取一天的开始和结束,但您需要将原始字符串日期解析为 Carbon 对象。use Carbon\Carbon;$date = Carbon::parse($request->input('date-filter')); // 2019/7/31$dateFrom = $date->startOfDay(); // 2019/7/31 00:00:00$dateTo = $date->endOfDay(); // 2019/7/31 23:59:59
打开App,查看更多内容
随时随地看视频慕课网APP