Невозможно собрать данные из моего PostController с помощью Laravel - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь создать в своем веб-приложении функцию, позволяющую пользователю просматривать сообщения между двумя датами.Однако у меня возникают проблемы при попытке передать данные из моей базы данных в шаблон блэйда.Вместо того, чтобы получать дату создания сообщения в посте, я получаю дату "01.01.1970", а номер вакансии не появляется.

enter image description here

ПервыйЯ добавил маршруты в свой файл web.php:

Route::get('/search', function () {
    return view('search');
});

Route::post('/select', 'PostController@getDate');

В своем файле PostController.php я добавил свою функцию getDate:

public function getDate(Request $request){
        $posts = DB::table('jobs')
                ->whereBetween('created_at', [$request->fdate, $request->sdate])
                ->get();

        $posts->created_at = $request->created_at;
        $posts->job_number = $request->job_number;
        return view('result', ['posts' => $posts]);
    }

Мой search.blade.php, которыйформа:

<form method="POST" action="/select">
    {{ csrf_field() }}
    <div class="form-group">
       <label>First Date:</label>
       <input type="date" class="form-control" name="fdate">
    </div>
    <div class="form-group">
       <label>Second Date:</label>
       <input type="date" class="form-control" name="sdate">
    </div>
    <input type="submit" value="Get Post Between" class="btn btn-primary">
</form>

Мой файл result.blade.php, который показывает сообщение.

@if(count( $posts )>0)
                <table class="table table-bordered table-striped">
                    <thead>
                        <th>Date created</th>
                        <th>Job Number</th>
                    </thead>
                    <tbody>
                        @foreach($posts as $post)
                            <tr>
                                <td>{{ date('j/m/Y', strtotime($posts->created_at)) }}</td>
                                <td>{{ $posts->job_number }}</td>
                            </tr>
                        @endforeach
                    </tbody>
                </table>
            @else
                <h3 class="text-center">No Post from Selected Range</h3>
            @endif

Я честно запутался, я использовал правильные переменные.

1 Ответ

0 голосов
/ 23 ноября 2018

Здесь вы добавляете свойства к объекту коллекции, а не к каждому элементу

$posts->created_at = $request->created_at;
$posts->job_number = $request->job_number;

, чтобы добавить эти свойства к каждому элементу, вы должны использовать map () или зациклить элементы.

foreach($posts as $post) {
    $post->created_at = $request->created_at;
    $post->job_number = $request->job_number;
}

вы должны использовать один пост, а не весь массив, чтобы получить дату

изменить

<td>{{ date('j/m/Y', strtotime($posts->created_at)) }}</td>

на

<td>{{ date('j/m/Y', strtotime($post->created_at)) }}</td>

то же самое для {{ $posts->job_number }} -> {{ $post->job_number }}

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