Staram się stworzyć funkcję w mojej aplikacji internetowej, która pozwoli użytkownikowi zobaczyć posty między dwiema datami. Mam jednak problemy z przekazaniem danych z mojej bazy danych do szablonu bloku. Zamiast pobierać date_created postu otrzymuję datę „1/01/1970”, a numer pracy się nie pojawia.

enter image description here

Najpierw dodałem trasy w moim pliku web.php:

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

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

W moim pliku PostController.php dodałem funkcję 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]);
    }

Mój search.blade.php czyli formularz:

<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>

Mój plik result.blade.php, który pokazuje post.

@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

Jestem szczerze zdezorientowany, użyłem poprawnych zmiennych.

0
Jafar Salami 23 listopad 2018, 17:03

1 odpowiedź

Najlepsza odpowiedź

Tutaj dołączasz właściwości do obiektu kolekcji, a nie do każdego elementu

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

Aby dodać te właściwości do każdego elementu, powinieneś użyć map() lub zapętlić elementy.

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

Powinieneś użyć pojedynczego posta, a nie całej tablicy, aby uzyskać datę

Zmiana

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

Z

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

Te same rzeczy dla {{ $posts->job_number }} -> {{ $post->job_number }}

3
simonecosci 23 listopad 2018, 17:12