Я хочу создать средство выбора даты (календарь) для фильтрации базы записей моей базы данных по временным меткам (Laravel 6) - PullRequest
0 голосов
/ 15 февраля 2020

Как добавить средство выбора даты для моих отчетов (Laravel6) Я до сих пор не знаю, с чего начать.

Вот мой контроллер отчетов (индекс):

  public function index()
{
    $reports=Report::orderBy('id', 'DESC')->paginate(10);

    return view('reports.index',['reports' => $reports]);
}

Вот мой индекс в моем report.index html

<div class="table-responsive">
                    <table class="table align-items-center table-flush">
                        <thead class="thead-light">
                        <tr>
                            <th scope="col">Name</th>
                            <th scope="col">Student number</th>
                            <th scope="col">Transaction</th>
                            <th scope="col">Remarks</th>
                            <th scope="col">Queue number</th>
                            <th scope="col">Created at</th>
                            <th scope="col"></th>
                        </tr>
                        </thead>
                        <tbody>
                        @foreach ($reports as $report)
                            <tr>
                                <td>{{ $report->name}}</td>
                                <td>{{ $report->snumber}}</td>
                                <td>{{ $report->transaction}}</td>
                                <td>{{ $report->remarks}}</td>
                                <td>{{ $report->letter}}-{{ $report->number}}</td>
                                <td>{{ $report->created_at }}</td>

                            </tr>
                        @endforeach
                        </tbody>
                    </table>
                </div>
                <div class="card-footer py-4">
                    <nav class="d-flex justify-content-end" aria-label="...">
                        {{ $reports->links() }}
                    </nav>
                </div>

Моя таблица базы данных выглядит следующим образом:

 Schema::create('reports', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('snumber');
        $table->string('name');
        $table->string('email');
        $table->string('mobile');
        $table->string('department');
        $table->string('letter');
        $table->integer('number');
        $table->string('transaction');
        $table->string('remarks')->nullable();
        $table->timestamps();
        $table->softDeletes();
    });

Пожалуйста, помогите мне. Спасибо!

1 Ответ

0 голосов
/ 15 февраля 2020

Чтобы сначала отфильтровать данные, вы должны поместить datepicker в тег form вне таблицы, в которой содержатся данные.

Если вы хотите использовать ajax вызов, то передайте это значение формы, которое содержит дату фильтра, и тем же методом index вы можете проверить, является ли этот вызов ajax вызовом или нет.

Если ajax вызов, то переопределите переменную с отфильтрованными данными.

Примерно так:

$reports=Report::orderBy('id', 'DESC')->paginate(10);
if($request->ajax()){
        $reports=Report::orderBy('id', 'DESC')->whereDate('created_at', today())->paginate(10);
}
return view('reports.index',['reports' => $reports]);

, если вы не хотите использовать ajax вызов и хотите загрузить страницу, вы можете передать данные и проверить, существуют они или нет, что-то например,

$reports=Report::orderBy('id', 'DESC')
->when(! empty(\request('filterdate')), function($q) {
    return $q->whereDate('created_at', today());
})
->paginate(10);
return view('reports.index',['reports' => $reports]);

Будет отфильтрована только дата, когда filterdate не пусто.

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...