Laravel 5和Eloquent在数据库的两个日期之间

时间:2016-12-12 12:58:44

标签: php laravel laravel-5

我是Laravel 5的初学者。我有一个表:用户名为CreateDate,Type和Channel。

我有一个用户列表,我在View中选择:Trans StartDate,Trans EndDate,Type和Channel。

我想展示:Tras StartDate < CreateDate < Trans EndDate包含Type和Channel。 name="time_start", "time_end", "type", "channel"

我的路线:

Route::post('user', 'CSKHController@index');

我的控制器:

public function index() {

    $start = Input::get ( 'time_start' );
    $end = Input::get ( 'time_end' );      

    $articles = KhachHang::all()->whereBetween('CreateDate', [$start, $end])->get();

    return view('admin/layouts/test', compact('stt','article'))->withDetails($articles);

}

请帮帮我!

4 个答案:

答案 0 :(得分:2)

老问题,但答案并不是很好。使用whereBetween(),自至少5.0 docs

以来一直存在

$articles = KhachHang::whereBetween('CreateDate', [$start, $end])->get();

答案 1 :(得分:2)

只需将此添加到您的口才查询中即可。

->whereBetween('your_field', [$from, $to])->get();

答案 2 :(得分:1)

要检查两个日期,您可以使用此(以及其他选项):

$articles = KhachHang::where('CreateDate', '>=', $start)
                     ->where('CreateDate', '<=', $end)->get();

您必须确保日期格式为“Y-m-d”,否则代码将无效。

答案 3 :(得分:1)

Laravel 5。*

这是我如何在 laravel 5.6 项目中使用雄辩的示例。

my-view.blade.php

简化的html形式:

<form action="my-route" method="POST">

    {{ csrf_field() }}

    <input type="date" name="from">

    <input type="date" name="to">

    <button type="submit">Submit</button>

</form>

MyController.php

use Illuminate\Support\Carbon;

// ...

$request->validate([

    'from'        => 'required|date',
    'to'          => 'required|date',
]);

$from    = Carbon::parse($request->from)
                 ->startOfDay()        // 2018-09-29 00:00:00.000000
                 ->toDateTimeString(); // 2018-09-29 00:00:00

$to      = Carbon::parse($request->to)
                 ->endOfDay()          // 2018-09-29 23:59:59.000000
                 ->toDateTimeString(); // 2018-09-29 23:59:59

$models  = Model::whereBetween('created_at', [$from, $to])->get();

// do whatever you want with the query results...

其他资源

Date range with whereBetween

Converting a carbon date to mysql timestamp